Mysql缓存使用

Mysql缓存相关信息查询

相关资料参考《高性能Mysql》第309页知识,这一块都是关于缓存的使用和如何优化缓存使用

1. 查看mysql缓存信息

show status like 'Qcache%';

结果:

Variable_nameValue中文解释
Qcache_free_blocks1缓存中空闲块数
Qcache_free_memory1031832空闲缓存空间
Qcache_hits0缓存命中次数
Qcache_inserts0缓存未命中时,数据写入缓存次数
Qcache_lowmem_prunes0表示缓存修剪次数,缓存满时,会使用LRU算法移除最久未被使用缓存,此值较大,说明缓存空间太小
Qcache_not_cached12106650没有被缓存的查询sql数量
Qcache_queries_in_cache0缓存查询语句数量
Qcache_total_blocks1缓存总共缓存块数
查询缓存的碎片率  =(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%';

缓存使用流程

在这里插入图片描述

关于缓存属性的设置,可以类比于下面设置query_cache_type来进行设置

2. 相关配置优化

1. query_cache_type 设置缓存是否使用

设置缓存使用,下面设置是在制定的sql语句中加上 SQL_CACHE 该条查询语句使用缓存 ==DEMAND

当query_cache_type=1 所有的sql都是用缓存

set global query_cache_type=2

在查询语句上加 SQL_NO_CACHE时,将会实现多数语句使用缓存,少数语句不适用缓存,加SQL_NO_CACHE的该条查询语句不适用缓存

对SQL_CACHE 和SQL_NO_CACHE使用示例:

// SQL_CACHE
SELECT SQL_CACHE * FROM pms_category ;

// SQL_NO_CACHE
SELECT SQL_NO_CACHE * FROM pms_category ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值