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的空间是用来维护缓存的元数据的(什么是元数据:),例如空间内存,数据表和查询结果的映射,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.缓存查询分析步骤:
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
腾小云导读 不管你的研发团队有多么丰富的经验,还是拥有何等体量的代码,或者是新技术的运用,总会产生一定程度的技术债。本篇作者进入腾讯十余年,总结分析了技术债生成的原因并结合个人项目经历分享技术债务应对方法。欢迎围观~ 目录 1 基本认知 1.1 技术债务的含义…