手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mysql>列表

迅速优化MySQL数据库性能

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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

  (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 实现。这是个比较谨慎的工作,上面的结果也仅仅是我的一些看法,您能够根据您自己主机的硬件情况(特别是内存大小)进一步修改。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!