mysql查询优化-查询缓存

mysql如何判断缓存是否命中

  • 缓存使用的是一个引用表,通过一个哈希值的引用,这个哈希值包括了,当前要查询的数据库,客户端协议,查询本身等
  • 当判断缓存是否命中时,mysql是不会解析,优化的,使用的是sql语句和客户端发送过来的原始信息。
  • 所以任何字符上的不同,例如空格,注释等都会导致缓存不会命中(所以这就导致缓存命中的条件比较苛刻,不同的编码习惯,命中率的影响很大)

查询缓存如何使用内存

  • 查询缓存是完全在内存当中,基本的管理维护数据结构大概需要40kb左右的内存资源
  • mysql用于查询缓存的内存被分成了一个个的内存块,数据块是变长的;每个数据块存储了自己的类型,大小,和存储的数据本身,外加前一个和后一个的数据指针

什么时候下查询缓存能发挥作用

  • 当收益大于成本的时候,比较适合使用查询缓存(例如:缓存那些需要大量消耗资源的查询比较适合查询缓存)
  • 查询缓存命中率是一个比较直接的衡量标准,但是它是一个很难判断的值,因为30%的命中率带来的收益不一定比80%的命中率带来的收益低,因为命中率和节省的时间之间没有直接的关系。
  • 比较建议的指标:“命中和插入的比值”,Qcache_hits和Qcache_inserts的比值达到3:1时,查询缓存通常是有效的;最好达到10:1
  • 最好的判断的方法就是使用通过查看某类查询是否增大和减小查询时间来判断。
  • 成本࿱
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值