0

我正在尝试优化我的 mysql 数据库。我在运行 debian 的 VPS 上有大约 2000 个查询/秒和 16GB RAM。刚刚运行 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

谢谢

4

3 回答 3

2

通过按原样关闭统计数据,您将获得更好的性能。

如果您显示实际内存使用情况(百分比:(query_cache_size - Qcache_free_memory)/query_cache_size)会很有帮助

把记忆扔在它上面不太可能有帮助。可能有少量查询将从缓存中受益 - 我假设您已将 query_cache_type 设置为 1(自动)。将其更改为 2 并将 SQL_CACHE 声明添加到应该可缓存的选择中(注意 MySQL 要求查询的第一个字母为“S”以将其视为缓存的候选者)。

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

于 2012-05-10T07:59:46.830 回答
2

您应该首先优化查询以利用查询缓存。2,4%的效率真的很低。在这里阅读很好,它将为查询缓存的实际工作方式提供大量信息。

查询必须是确定性的,我发现这很有趣..它让您考虑NOW()在查询中使用事物。很抱歉,在优化您当前的 51k 选择方面我无法提供更多帮助。

于 2012-05-10T07:47:39.730 回答
0

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

如果您将限制设置得更低(在我们的例子中为 64k),您可以在缓存中存储更多的小查询。

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

于 2016-02-12T14:27:02.623 回答