Mysql缓存是我头痛的问题



这是我的查询缓存状态

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中被删除。

相关内容

  • 没有找到相关文章

最新更新