MySQL数据库性能优化的关键参数(转)

咱们在进行数据库管理和开发中常常会遇到性能问题,这就涉及到MySQL的性能优化。经过在网络上查找资料和笔者本身的尝试,我认为如下系统参数是比较关键的:mysql

关键参数一:back_logsql

要求 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。性能优化

关键参数二:interactive_timeout服务器

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

关键参数三:key_buffer_size性能

索引块是缓冲的而且被全部的线程共享。key_buffer_size是用于索引块的缓冲区大小,增长它可获得更好处理的索引(对全部读和多重写),到你 能负担得起那样多。若是你使它太大,系统将开始换页而且真的变慢了。默认数值是8388600(8M),个人MySQL主机有2GB内存,因此我把它改成 402649088(400MB)。优化

关键参数四:max_connections操作系统

容许的同时客户的数量。增长该值增长 mysqld 要求的文件描述符的数量。这个数字应该增长,不然,你将常常看到 Too many connections 错误。 默认数值是100,我把它改成1024 。

关键参数五:record_buffer

每一个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。若是你作不少顺序扫描,你可能想要增长该值。默认数值是131072(128K),我把它改成16773120 (16M)

关键参数六:sort_buffer

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

关键参数七:table_cache

为全部线程打开表的数量。增长该值能增长mysqld要求的文件描述符的数量。MySQL对每一个惟一打开的表须要2个文件描述符。默认数值是64,我把它改成512。

关键参数八:thread_cache_size

能够复用的保存在中的线程的数量。若是有,新的线程从缓存中取得,当断开链接的时候若是有空间,客户的线置在缓存中。若是有不少新的线程,为了提升性能可 以这个变量值。经过比较 Connections 和 Threads_created 状态的变量,能够看到这个变量的做用。我把它设置为 80。

关键参数九:wait_timeout

服务器在关闭它以前在一个链接上等待行动的秒数。 默认数值是28800,我把它改成7200。

注:参数的调整能够经过修改 /etc/my.cnf 文件并重启 MySQL 实现。这是一个比较谨慎的工做,上面的结果也仅仅是个人一些见解,你能够根据你本身主机的硬件状况(特别是内存大小)进一步修改。

 

原文地址:http://database.51cto.com/art/200906/132814.htm

相关文章
相关标签/搜索