我正在尝试优化我的mysql数据库。我有大约 2000 次查询/秒和 16GB 内存在 VPS 上运行 debian。刚刚运行了MySQL调谐器。它说:
[!!] 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
谢谢
应首先优化查询以利用查询缓存。 2,4% 的效率真的很低。很好的阅读,它将为查询缓存的实际工作方式提供大量情报。
查询必须是确定性的,我发现非常有趣。它使您考虑在查询中使用NOW()
的东西。很抱歉,我在优化您当前的 51k 选择方面无法提供更多帮助。
通过按
原样关闭统计数据,您将获得更好的性能。
如果您显示实际内存使用情况(以百分比表示:(query_cache_size - Qcache_free_memory)/query_cache_size),这将很有帮助
把记忆扔给它不太可能有帮助。很可能有少量查询将从缓存中受益 - 我假设您已将query_cache_type设置为 1(自动)。将其更改为 2 并将SQL_CACHE声明添加到应该可缓存的选择中(NB MySQL 要求查询的第一个字母为"S"以将其视为缓存的候选者)。
根据内存使用情况和可用块的数量,您可能也应该减小缓存的大小。
对我们来说,
它降低了query_cache_limit。查询缓存限制设置结果集的大小以允许它在查询缓存中。
如果将限制设置得更低(在本例中为 64k),则可以在缓存中存储更多小查询。
256M/8M = 32 个查询256M/64K = 4096 次查询