了解 MySQL 查询缓存以及何时实现它?

了解 MySQL 查询缓存以及何时实现它?

在我们当前的 MySQL 服务器上查询缓存已启用。

Qchache_hits: 31913 
Qchache_inserts: 50959
Qchache_lowmem_prunes: 9320
Qchache_not_chached: 209320
Qchache_queries_in_chace: 986

com_update: 0
com_delete: 0
com_Select: 10

我不完全理解查询缓存 —— 我目前正在阅读它并尝试理解它。

我们的数据库保存库存数据、客户数据、员工数据、销售数据等。查询很少运行超过一次。查询运行两次的可能性是查看两次特定的销售信息。但基本上我们系统中的所有内容都在不断变化。它总是被更新、删除、插入,我无法想象用户在一周内运行两次相同的查询。

我是否真的需要启用查询缓存?我猜想插入意味着已添加 51k 个条目,但其中只有 986 个被存储?

一个想法是刷新缓存,并观察一周,并检查每周访问了多少个缓存查询,看看它是否真的带来了任何好处?

任何帮助/指导都值得赞赏,谢谢

答案1

是的,添加了 51k 个条目,现在只有 986 个。因此,大约有 50k 个条目添加到了缓存中,但不再存在,其中 9k 个是因为缓存内存不足,其余的是因为插入/更新使缓存条目无效。Com_select 是一个参数,在尝试确定您是否获得好处时很有用。但实际上它主要取决于缓存了哪些查询。

如果你正在运行 select 语句,并且确定它不会从缓存中受益,则可以将 SQL_NO_CACHE 添加到 select 语句,请参阅此处的文档

我建议阅读本文(以及该博客总体情况)。

相关内容