迅速优化MySQL数据库性能

2008-02-23 07:40:21来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  通过在网络上查找资料和自己的尝试,我认为以下系统参数是比较关键的:

  (1)、back_log:

  需要 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到很多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。

  back_log 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求能够被存在堆栈中。只有假如期望在一个短时间内有很多连接,您需要增加他,换句话说,这值 对到来的TCP/IP连接的侦听队列的大小。您的操作系统在这个队列大小上有他自己的限制。 试图设定back_log高于您的操作系统的限制将是无效的。

  当您观察您的主机进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大 back_log 的值了。默认数值是50,我把他改为500。

  (2)、interactive_timeout:

  服务器在关闭他前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,我把他改为7200。

  (3)、key_buffer_size:

  索引块是缓冲的并且被任何的线程共享。key_buffer_size是用于索引块的缓冲区大小,增加他可得到更好处理的索引(对任何读和多重写),到您 能负担得起那样多。假如您使他太大,系统将开始换页并且真的变慢了。默认数值是8388600(8M),我的MySQL主机有2GB内存,所以我把他改为 402649088(400MB)。

  (4)、max_connections:

  允许的同时客户的数量。增加该值增加 mysqld 需要的文档描述符的数量。这个数字应该增加,否则,您将经常看到 Too many connections 错误。 默认数值是100,我把他改为1024 。

  (5)、record_buffer:

  每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。假如您做很多顺序扫描,您可能想要增加该值。默认数值是131072(128K),我把他改为16773120 (16M)

  (6)、sort_buffer:

  每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。默认数值是2097144(2M),我把他改为 16777208 (16M)。

  (7)、table_cache:

  为任何线程打开表的数量。增加该值能增加mysqld需要的文档描述符的数量。MySQL对每个唯一打开的表需要2个文档描述符。默认数值是64,我把他改为512。

  (8)、thread_cache_size:

  能够复用的保存在中的线程的数量。假如有,新的线程从缓存中取得,当断开连接的时候假如有空间,客户的线置在缓存中。假如有很多新的线程,为了提高性能可 以这个变量值。通过比较 Connections 和 Threads_created 状态的变量,能够看到这个变量的作用。我把他配置为 80。

  (10)、wait_timeout:

  服务器在关闭他之前在一个连接上等待行动的秒数。 默认数值是28800,我把他改为7200。

  注:参数的调整能够通过修改 /etc/my.cnf 文档并重启 MySQL 实现。这是个比较谨慎的工作,上面的结果也仅仅是我的一些看法,您能够根据您自己主机的硬件情况(特别是内存大小)进一步修改。


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 完全解析MySQL数据库中Show命令用法

下一篇: Java连接各种数据库的实例