有效配置MySQL参数

2009-05-13 04:28:40来源:未知 阅读 ()

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

有效配置MySQL参数
要优化配置参数,首先要了解当前的配置参数以及运行情况。使用下列命令可以获得目前服务器使用的配置参数:
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:该案例来自一个upderperf的服务器
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 )。

案例1:健康状况
key_buffer_size – 402649088 (384M)
key_read_requests – 597579931
key_reads - 56188
案例2:警报状态
key_buffer_size – 16777216 (16M)
key_read_requests – 597579931
key_reads - 53832731
案例1中比例低于1:10000,是健康的情况;案例2中比例达到1:11,警报已经拉响。

优化query_cache_size
从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。

标签:

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

上一篇:SHOW STATUS详解

下一篇:MySQL常见错误问答