10月 17

mysql的缓存使用

张子萌[2010-10-17]

1。在配置文件中添加配置

query_cache_size = 24M
query_cache_type = 1 #0不缓存
#1 缓存所有的结果,除了 SELECT SQL_NO_CACHE … 查询
#2 仅缓存 SELECT SQL_CACHE … 查询
query_cache_limit = 1048576 #不缓存大于这个值的结果。(缺省为 1M)

2。添加完毕重启mysql数据库

3。登陆mysql数据库查看缓存设置情况

mysql > show variables like ‘%query%’;

have_query_cache 缓存是否可用
long_query_time 超过N秒才记录
query_alloc_block_size 缓存分配的块大小(推荐4096为4k)
query_cache_limit 指示每个查询结果集最大的缓存限制,超过这个值的结果集不缓存
query_cache_min_res_unit 被分配给缓存的最小的块的数量
query_prealloc_size 被缓存用于解析和执行的持久buffer的大小
query_cache_size 缓存的大小

4。查看mysql数据库缓存使用情况

mysql > show status like ‘Qcache%’;

Qcache_free_blocks 查询缓存中的空闲内存块的数目
Qcache_free_memory 查询缓存的空闲内存总数
Qcache_hits 缓存采样数数目
Qcache_inserts 被加入到缓存中的查询数目
Qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目
Qcache_not_cached 没有被缓存的查询数目
Qcache_queries_in_cache 在缓存中已注册的查询数目
Qcache_total_blocks 查询缓存中的块的总数目

5。维护部分

5.1
查询缓存碎片率 Qcache_free_blocks / Qcache_total_blocks * 100%
如果查询缓存碎片率超过20%
flush query cache 整理缓存碎片

5.2
查询缓存利用率 (query_cache_size – Qcache_free_memory) / query_cache_size * 100%
如果利用率在25%以下,则是query_cache_size设置的过大。

5.3
查询缓存命中率 (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

5.4
刷新缓存状态
flush status

5.5
重启缓存服务
reset query cache