查询缓存效率为2.4%

时间:2012-05-10 07:39:18

标签: php sql-server mysql

我正在尝试优化我的mysql数据库。我在VPS上有大约2000个查询/秒和16GB RAM,运行debian。刚刚运行MySQL Tuner。它说:

[!!] Query cache efficiency: 2.4% (1K cached / 51K selects)
... 
query_cache_limit (> 8M, or use smaller result sets)

这是否意味着我应该增加query_cache_limit或降低它?

我现在有这些设置:

query_cache_limit   = 8M
query_cache_size    = 256M

谢谢

3 个答案:

答案 0 :(得分:2)

您应该首先优化查询以使用查询缓存。 2,4%的效率真的很低。伟大的read here,它将给出很多关于查询缓存实际工作方式的信息。

查询必须是确定性的我发现它非常有趣..这会让您考虑在查询中使用NOW()。对不起,我对优化你当前的51k选择无法提供更多帮助。

答案 1 :(得分:2)

通过使用统计数据切换它可以获得更好的性能。

如果您显示实际的内存使用量(以百分比形式:(query_cache_size - Qcache_free_memory)/ query_cache_size),那将会很有帮助

向它投掷记忆不太可能有所帮助。可能有少量查询会从缓存中受益 - 我很遗憾你将query_cache_type设置为1(自动)。将其更改为2并将SQL_CACHE声明添加到应该可缓存的选择中(NB MySQL要求查询的第一个字母为'S'以将其视为缓存的候选者)。

根据内存使用情况和空闲块数量,您可能也应该减小缓存的大小。

答案 2 :(得分:0)

对我们来说,它可以降低query_cache_limit。 查询缓存限制设置在查询缓存中允许它的大小结果集。

如果将限制设置为较低(在我们的情况下为64k),则可以在缓存中存储更多小型查询。

256M / 8M = 32个查询 256M / 64K = 4096个查询