设为首页 加入收藏

TOP

MySQL中my.cnf参数设定解析
2014-11-24 17:26:12 】 浏览:9379
Tags:MySQL my.cnf 参数 设定 解析

1.获取当前配置参数
要优化配置参数,首先要了解当前的配置参数以及运行情况。使用下列命令可以获得目前服务器使用的配置参数:


mysqld –verbose –help


mysqladmin variables extended-status –u root –p


在MySQL控制台里面,运行下列命令可以获取状态变量的值:


mysql> SHOW STATUS;


如果只要检查某几个状态变量,可以使用下列命令:


mysql> SHOW STATUS LIKE ‘[匹配模式]’; ( 可以使用%、 等 )


2.优化参数
参数优化基于一个前提,就是在我们的数据库中通常都使用InnoDB表,而不使用MyISAM表。在优化MySQL时,有两个配置参数是最重要的,即table_cache和key_buffer_size。


table_cache


table_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。


对于有1G内存的机器,推荐值是128-256。



案例1:该案例来自一个不是特别繁忙的服务器


table_cache – 512


open_tables – 103


opened_tables – 1273


uptime – 4021421 (measured in seconds)


该案例中table_cache似乎设置得太高了。在峰值时间,打开表的数目比table_cache要少得多。


案例2:该案例来自一台开发服务器。


table_cache – 64


open_tables – 64


opened-tables – 431


uptime – 1662790 (measured in seconds)


虽然open_tables已经等于table_cache,但是相对于服务器运行时间来说,opened_tables的值也非常低。因此,增加table_cache的值应该用处不大。


案例3:该案例来自一个upderperforming的服务器


table_cache – 64


open_tables – 64


opened_tables – 22423


uptime – 19538


该案例中table_cache设置得太低了。虽然运行时间不到6小时,open_tables达到了最大值,opened_tables的值也非常高。这样就需要增加table_cache的值。


key_buffer_size


key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。


key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。


对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux领域的新动向之数据库与 ODF 下一篇[小技巧]手工扩大Oracle数据库表..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目