当前位置:Gxlcms > 数据库问题 > mysql查询缓存

mysql查询缓存

时间:2021-07-01 10:21:17 帮助过:17人阅读

显示指定某个查询不使用缓存

select sql_no_cache name from city;

(3) 在query_cache_type为DEMAND的情况下,需要使用sql_cache指定某个查询使用缓存

select sql_cache name from city;

缓存使用情况查询

查询缓存变量只能在my.ini文件中设置

技术图片

技术图片

执行查询语句:select sql_cache name from city;

执行show status like ‘Qcache%‘;

 技术图片

(1) Qcache_free_blocks表示已分配内存块中空闲块数量;

(2) Qcache_total_blocks表示当前查询缓存占用的内存块数量;

(3) Qcache_free_memory表示缓存空闲空间大小;

(4) Qcache_hits表示缓存命次数;

(5) Qcache_inserts表示缓存未命中时,数据写入缓存次数;

(6) Qcache_queries_in_cache表示缓存查询语句数量;

(7) Qcache_lowmem_prunes表示缓存修剪次数,缓存满时,会使用LRU算法移除最久未被使用缓存,此值较大,说明缓存空间太小;

(8) Qcache_not_cached表示没有被缓存的查询sql数量。

查询缓存的碎片率  =(Qcache_free_blocks / Qcache_total_blocks)* 100%

如果Qcache_free_blocks的值过大,则碎片率越高,证明我们缓存内存碎片略多,可以尝试适当的调小query_cache_min_res_unit的值,也可以使用 FLUSH QUERY CACHE语句来清理缓存碎片。

查询缓存利用率  = (query_cache_size - Qcache_free_memory) / query_cache_size  * 100%

如果查询缓存利用率太低,则表示query_cache_size设置的可能过大,可适度调小,如果缓存利用率非常高,同时Qcache_lowmem_prunes的值比较大,则表示query_cache_size的值设置的略小。

query_cache_min_res_unit的预估值参考计算公式: (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

查询缓存命中率  = (Qcache_hits / Com_select)* 100%

上述公式中的Com_select表示查询语句的执行次数(这样描述并不准确),可以使用如下语句获得查询语句的执行次数

show status like ‘Com_select%‘;

重置缓存

reset query cache;

mysql查询缓存

标签:文件中   情况   lock   its   参数   cache   log   效率   关闭   

人气教程排行