这是我的查询缓存状态
SHOW STATUS LIKE 'Qcache%';
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| Qcache_free_blocks | 33981 |
| Qcache_free_memory | 166966128 |
| Qcache_hits | 1345257151 |
| Qcache_inserts | 742505272 |
| Qcache_lowmem_prunes | 232069766 |
| Qcache_not_cached | 648660189 |
| Qcache_queries_in_cache | 80929 |
| Qcache_total_blocks | 196034 |
我得到太多的连接和80%的查询被困在"0 |等待查询缓存锁"。我正在考虑完全禁用查询缓存。
设置:query_cache_type = 0query_cache_size = 0
但在此之前,我可以计算有多少查询击中缓存和多少没有?这样我就能给出更有力的例子
您可以看看下面的输出:
SHOW GLOBAL STATUS LIKE 'Qcache%';
通过查看命中次数与系统执行的查询总数的比较,您可以计算出实际从缓存中受益的查询的百分比。
实际上,MySQL查询缓存在大多数情况下弊大于利。通常最好禁用它并优化查询。因此,查询缓存功能在MySQL 5.7中被弃用,并在MySQL 8.0中被删除。