NoteDeep
本页讨论:
  • 什么是查询缓存
  • 如何优化查询缓存配置

什么是查询缓存?

Query cache 作用于整个 MySQL,主要用来缓存 MySQL 中的查询结果集,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。
sql执行流程图:

优化查询缓存配置


通过以下命令查看缓存相关变量
show variables like '%query_cache%';

参数解释:
have_query_cache : 
表示此版本mysql是否支持缓存

query_cache_limit  :
缓存最大值

query_cache_size : 
缓存大小
query_cache_type :off 表示不缓存,on表示缓存所有结果
开启缓存方式:在my.ini 文件底部添加:
query_cache_type = 1 如果query_cache_size  值为0 ,也需要在my.ini中设置为需要的值。


通过以下命令查看查询缓存状态
show status like '%Qcache%';

Qcache_free_blocks:
目前还处于空闲状态的 Query Cache 中内存 Block 数目
Qcache_free_memory:
目前还处于空闲状态的 Query Cache 内存总量
Qcache_hits:
Query Cache 命中次数
Qcache_inserts:
向 Query Cache 中插入新的 Query Cache的次数,也就是没有命中的次数
Qcache_lowmem_prunes:
当 Query Cache 内存容量不够,需要从中删除老的 Query Cache以给新的 Cache 对象使用的次数
Qcache_not_cached:
没有被 Cache 的 SQL 数,包括无法被 Cache 的 SQL 以及由于query_cache_type 设置的不会被 Cache 的 SQL
Qcache_queries_in_cache:
目前在 Query Cache 中的 SQL 数量
Qcache_total_blocks:
Query Cache 中总的 Block 数量
检查换成命中情况 查询缓存命中率的计算公式是
Qcache_hits/(Qcache_hits+Com_select)。

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



评论列表

    什么是查询缓存?
    优化查询缓存配置