1

我在我的服务器中启用了 mysql 慢查询来记录需要超过 5 秒的查询。当我从 mysql> 运行相同的查询时,报告超过 10 秒的查询用时不到 1 秒。这是为什么?

TIA,-彼得

4

1 回答 1

1

这可能是由于缓存。

数据库将一些数据缓存在内存中,而将大部分数据保留在磁盘上。当通过 sql 查询获取数据时,数据被加载——然后保存在内存中,以防在不久的将来再次被请求。最终,如果该数据不再被请求,它将在缓存中被后来查询进入缓存的新数据覆盖。

在某些系统上,硬盘本身有额外的缓存——从磁盘获取的数据可能会被磁盘控制器保存在缓存中。这是因为最近从磁盘获取的数据很可能会再次被获取。

因此,一旦从查询提示请求数据,它将被缓存——可能由磁盘控制器和数据库本身缓存。

在您的应用程序上,这种情况不太可能发生,因为新用户在不同时间出现并访问他们自己的数据(在他们到达之前不太可能被缓存)。

加速数据库的最常见方法之一是增加服务器可用的内存量,以便可以缓存更多数据。

有关更多信息,请参阅 MySQL Query Cache 上的 MySQL 文档

于 2012-05-09T16:31:02.493 回答