表缓存命中率为 0% - 这是一个很大的问题吗?

Don*_*ool 5 mysql

嗨,我的服务器突然变慢了,一直在 0.10 秒的查询现在需要 20 秒。有点随机,有时它会立即弹回。所以我遇到了一个非常突然和严重的性能问题。

我运行了 mysqltuner.pl,它报告了一件可能有问题的事情:

[!!] Table cache hit rate: 0% (400 open / 1M opened)
Run Code Online (Sandbox Code Playgroud)

我刚刚开始深入研究这个性能问题,但有谁知道这是否是一个很大的直接危险信号?

我可以做一些 DD 但现在很紧迫。非常感谢任何帮助。

大学教师

Bil*_*hor 1

当频繁进行表扫描的表不再适合内存时,我看到了这个问题。数据不是从缓存中读取,而是从磁盘读取。这将以 LRU(最近最少使用)为基础刷新数据。因此,您将不断地读回数据以进行下一个表扫描周期。

如果可用,请运行sar以确定哪个磁盘分区具有高 IO。如果您将数据库分布在多个磁盘或分区上,这一点会更有用。还要检查内存是否被大量分页。

检查慢速查询日志并对查询运行解释计划。这应该有助于识别问题表。

如果不再有足够的可用内存来将数据库缓冲区保留在内存中,则可能会出现类似的问题。这将导致部分或全部数据库内存被换出。它很快就会被调入。这通常称为抖动。