Browsing the archives for the 数据库类 category

MySQL Query Cache 小结

in mysql

最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考。 顾名思义,MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。

0 Comments

CAP理论与分布式数据库

in mysql

根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。而传统数据库保 证了强一致性(ACID模型)和高可用性,所以要想实现一个分布式数据库集群非常困难,这也解释了为什么数据库的扩展能力十分有限。而近年来不断发展壮大 的NoSQL运动,就是通过牺牲强一致性,采用BASE模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。 但是,对于CAP理论也有一些不同的声音,数据库大师Michael Stonebraker就撰文《Errors in Database Systems, Eventual Consistency, and the CAP Theorem》,表 示为了P而牺牲C是不可取的。事实上,数据库系统最大的优势就对一致性的保证,如果我们放弃了一致性,也许NoSQL比数据库更有优势。那么,有没有可能 实现一套分布式数据库集群,即保证可用性和一致性,又可以提供很好的扩展能力呢?回答是:有的。 目前,有很多分布式 数据库的产品,但是绝大部分是面向DSS类型的应用,因为相比较OLTP应用,DSS应用更容易做到分布式扩展。Michael Stonebraker提到了一种新型的数据库VoltDB,它的定义是Next-Generation SQL Database for Fast-Scaling OLTP Applications。虽然产品还没有问世,但是从技术资料上来看,它有几个特点:

0 Comments

freebsd下启动、停止 MySQL命令

in mysql, 服务器类

启动、停止 MySQL 要启动 MySQL 的方法:(以本文将 MySQL 安装在 /usr/local/mysql 为例) # /usr/local/mysql/share/mysql.server start 注意在第一次执行前,须将 mysql.server 设成可执行(chmod 744 mysql.server),另外可将这行指令加在 /etc/rc.d/rc.local 档中,让 MySQL 在开机时自动启动。 要停止 MySQL 的方法: # /usr/local/mysql/bin/mysqladmin shutdown 如果你为 MySQL Administrator root 帐号(非作业系统的 root)设了密码,要停止 MySQL 则必须像下列这样做,MySQL 会询问你 root 的密码後才会执行 shutdown 的工作: # /usr/local/mysql/bin/mysqladmin -u root -p shutdown

0 Comments

MySQL压力测试工具 mysqlslap

in mysql

MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问 mysql来执行测试,使用起来非常的简单。通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册。 –auto-generate-sql, -a 自动生成测试表和数据 –auto-generate-sql-load-type=type 测试语句的类型。取值包括:read,key,write,update和mixed(默认)。 –number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1 –number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1

0 Comments

MySQL压力测试工具 mysqlslap

in mysql

mysqlslap是一个mysql官方提供的压力测试工具。以下是比较重要的参数: –-defaults-file,配置文件存放位置 –-concurrency,并发数 –-engines,引擎 –-iterations,迭代的实验次数 –-socket,socket文件位置 自动测试: -–auto-generate-sql,自动产生测试SQL –-auto-generate-sql-load-type,测试SQL的类型。类型有mixed,update,write,key,read。 –-number-of-queries,执行的SQL总数量 –-number-int-cols,表内int列的数量 –-number-char-cols,表内char列的数量

0 Comments

MYSQL压力测试

in mysql

1、安装supersmack http://vegan.net/tony/supersmack/ 安装过程以及我中间遇到问题的总结都在这里。 之前记得把libmysqlclient.so.16拷贝到/usr/lib中 去,这样make 的时候不用改MakeFile文件。 [root@localhost super-smack-1.3]# cp /usr/local/mysql/libmysqlclient.so.16 /usr/lib 我遇到的问题如下: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory 看到北京野狼的这个帖子: http://bbs.chinaunix.net/archiver/?tid-638662.html

0 Comments

如何修改mysql的一些变量

in mysql

比方说在一些实际生产环境中,想改个MYSQL的配置,但是又不想停止服务重起MYSQL,有什么办法呢?使用SET命令可以做到,请看下面几个例子: 1.设置key_buffer_size的大小为10M。 SET GLOBAL key_buffer_size = 10485760; 或 SET @@global.key_buffer_size = 10485760; 2.设置最大连接数为200 SET GLOBAL max_connections=200; 或 SET @@global.max_connections=200;

1 Comment

mysql中的max_connect_errors

in mysql

连接mysql server出来这个信息 引用 message from server: “Host ‘HP-2B6E9EC1747B’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’” 连接次数失败过多,并超过max_connect_erros的值后,服务器会直接拒绝来源机器的所有连接,只要把mysql server默认 max_connect_errors = 10 把这个值设置大点就好了,记得一定要执行mysqladmin flush-hosts命令来解锁,原来的主机才可以恢复正常连接的.

0 Comments

MySQL MVCC实现及其机制(转载)

in mysql

原文出处:http://www.cnblogs.com/perfectdesign/archive/2009/12/05 /1617508.html 多版本并发控制 Multiversion Concurrency Control 大部分的MySQL的存储 引擎,比如InnoDB,Falcon,以及PBXT并不是简简单单的使用行锁机制。它们都使用了行锁结合一种提高并发的技术,被称为MVCC(多版本并发控制)。MVCC并不单单应用在MySQL中,其他的数据库如Oracle,PostgreSQL,以及其他数据库也使用这个技术。 MVCC避免了许多需要加锁的情形以及降低消耗。这取决于它实现的方式,它允许非阻塞读取,在写的操作的时候阻塞必要的记录。 MVCC保存了某一时刻数据的一个快照。意思就是无论事物运行了多久,它们都能看到一致的数据。也就是说在相同的时间下,不同的事物看相同表的数据是不同的。如果你从来没有这方面的经验,可能说这些有点令人困惑。但是在以后这个会很容易理解和熟悉的。

0 Comments

MySQL 数据库优化(11)The Query Optimization Process

in mysql

摘自:http://www.chenyajun.com/2009/01/02/1623 查询优化过程 查询优化器 一个查询通常有很多种不同的但是产生相同结果的执行方式,优化器要找到最好的。 MySQL使用基于代价的优化器,它意味着它尽力预计不同执行计划的代价并选择最不昂贵的,代价的单位是一个4k的数据页的次数。你可以通过查看 Last_query_cost看到优化器预计的代价: mysql> SELECT SQL_NO_CACHE COUNT(*) FROM sakila.film_actor; +———-+ | count(*) | +———-+ | 5462 | +———-+ mysql> SHOW STATUS LIKE ‘last_query_cost’; +—————–+————-+ | Variable_name | Value | +—————–+————-+ | Last_query_cost | 1040.599000 | +—————–+————-+ 这意味着它要随机读取1040个数据页。它基于统计而估计:每个表或者索引的page数量,索引中不同值的比例,行和key的长度,key的分布。 优化器估计时并不包括任何类型的cache所产生的效果——它假定每次读都是一个磁盘IO操作。

0 Comments