MySQL配置文件在安装路径下有这几个文件:
1.my-huge.ini
2.my-medium.ini
3.my-large.ini
4.my-small.ini
不同流量和不同服务器环境,选择上述的不同配置文件。一般情况下,my-medium.ini能够满足大部分需求。
show variables;可以查看目前所有的参数.
先来看看三个重要的参数:key_buffer_size,query_cache_size,table_cache
key_buffer_size仅对MyIsam表起作用,他指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引的读速度。
一般我们设置为16M,实际上大一点的站点,这个参数是远远不够的。
通过查看key_reads : key_read_requests,可以知道key_buffer_size是否合理。
key_reads : key_read_requests应该尽可能的低,至少是1:100或1:1000更好。
上述状态值可以使用show status like 'key_read%'.
下面是一组运行了30天的MySQL运行信息:
key_buffer_size : 128M
key_read_requests:65075289
key_reads:79112
比例接近1:8000,说明状况非常好
从4.0.1开始,Mysql提供了查询缓冲机制。使用查询缓冲,mysql将select和查询结果
存放在缓冲区中,今后对于同样的select语句(区分大小写),将直接从缓冲区中读取
查询结果。根据mysql用户手册,使用查询缓冲最大可以达到238%的效率提升。
通过调节一下几个参数可以知道query_cache_size设置是否合理:
Qcache inserts,Qcache hits,Qcache lowmem prunes,Qcache free blocks,Qcache total blocks
Qcache_lowmem_prunes的值非常大,则说明经常出现缓冲不够的现象,同时Qcache_hits的值
非常大,则说明查询缓冲使用非常频繁,此时需要增加缓冲大小Qcache_hits的值不大,则表明查
询重复效率很低。这种情况下使用查询缓冲反而影响效率。在select中加入SQL_NO_CACHE则不
缓冲结果。
Qcache_free_blocks,如果该值非常大,则表明缓冲区碎片很多。
Query_cache_type决定是否使用查询缓冲。
table_cache指定表告诉缓存的大小。每当Mysql访问一个表时,如果在缓冲区还有空间,该表就
被打开并放入其中,这样可以更快的访问内容。通过检查峰值时的状态值open_tables和opened_Tables,可以决定是否需要增加table_cache值。
如果你发现open_tables等于table_cache并且opened_tables在不断增长,那么就需要增加table_cache值了。不能盲目的把table_cache设置的很大,否则会造成文件描述符不足,从而导致性能不稳定或者连接失败。
多余1G内存的机器,推荐128-256M。
下面是一台运行了30天的机器,设置table_cache=256
得到一下状态:open tables 256; opened tables 9046
虽然open_tables等于table_cache,但相对于服务器运行时间,已经运行了30天,opened_tables的值也非常低,所以无需增加table_cache.
如果仅仅在6个小时内疚出现上述状态信息,那么就需要考虑加大table_cache了。