博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 查询缓存
阅读量:5883 次
发布时间:2019-06-19

本文共 1104 字,大约阅读时间需要 3 分钟。

1.当前表的查询缓存状态查询:

SHOW VARIABLES LIKE '%query_cache%';

 2.sql语句会从查询缓存读条件:

  sql完全一致:即使多一个空格或者大小写不同都认为不同;如果使用不同的字符集、不同的协议等也会被认为是不同的查询而分别进行缓存。

3.查看查询缓存命中次数:

SHOW STATUS LIKE 'Qcache_hits';

 4.查询缓存失效:

  在表的结构或数据发生改变时,查询缓存中的数据不再有效。有这些INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE会导致缓存数据失效。所以查询缓存适合有大量相同查询的应用,不适合有大量数据更新的应用。

5.保存至查询缓存:

  缓存会在内存中开辟一块内存(query_cache_size)来维护缓存数据,其中有大概40K的空间是用来维护缓存的元数据的(什么是元数据:http://www.cnblogs.com/Alight/p/3982086.html),例如空间内存,数据表和查询结果的映射,SQL和查询结果的映射等.

  保存图示:

 

6.查询缓存缺点:

  1.查询缓存需要占用一定的内存;2.每次查询执行前都要先检查缓存,故不一定有利;

7.调优:

  1.如果需要缓存的查询很少,可以将query_cache_type设置为demand,然后对需要缓存的查询后面添加sql_cache。

  2.如果写入操作很多,这个时候可以禁用缓存,并将缓存大小query_cache_size设置为0,这样就不会占用内存。

  3.如果写操作存在,也想用查询缓存,那么就让写操作成批量的执行,而不是逐个执行。

8.具体情况分析:

  衡量打开缓存是否对系统有性能提升是一个很难的话题

  1. 通过缓存命中率判断, 缓存命中率 = 缓存命中次数 (Qcache_hits) / 查询次数 (Com_select)

  2. 通过缓存写入率, 写入率 = 缓存写入次数 (Qcache_inserts) / 查询次数 (Qcache_inserts)

  3. 通过 命中-写入率 判断, 比率 = 命中次数 (Qcache_hits) / 写入次数 (Qcache_inserts), 高性能MySQL中称之为比较能反映性能提升的指数,一般来说达到3:1则算是查询缓存有效,而最好能够达到10:1

9.缓存查询分析步骤:

  

 

转载于:https://www.cnblogs.com/gaara-zhang/p/9962910.html

你可能感兴趣的文章
Xcode修改项目的Build Location
查看>>
sql server日志不能shrink或truncate
查看>>
15分钟了解Java性能优化以及一切你想知道的(转)
查看>>
洛谷OJ U552 守墓人 线段树模板题
查看>>
微信连WiFi关注公众号流程更新 解决ios微信扫描二维码不关注就能上网的问题...
查看>>
Win7、Ubuntu双系统正确卸载Ubuntu系统
查看>>
Java JVM使用哪种编码格式
查看>>
Linux下memcache的安装和启动(转)
查看>>
postman --发送json请求
查看>>
Linux Shell常用技巧(一) RE
查看>>
linux自己主动重新启动tomcat脚本
查看>>
Ubuntu开机时出现"没有正确安装GNOME电源管理器的默认配置
查看>>
DFS回溯-函数递归-xiaoz triangles
查看>>
js调用soapWebService服务
查看>>
OTA Package Tools
查看>>
JavaWeb学习笔记——jsp:setproperty和getproperty
查看>>
浅谈 SOLID 原则的具体使用
查看>>
【设计模式】抽象工厂模式
查看>>
windows下制作PHP扩展
查看>>
基础知识漫谈(1): 想到哪儿写到哪儿
查看>>