我在我的服务器中启用了 mysql 慢查询来记录超过 5 秒的查询。当我从 mysql> 运行相同的查询时,报告超过 10 秒的查询用了不到 1 秒。这是为什么?
TIA, -彼得
最佳答案
这可能是由于缓存。
数据库将一些数据缓存在内存中,同时将大部分数据保留在磁盘上。当通过 sql 查询获取数据时,数据被加载——然后保存在内存中以防在不久的将来再次请求它。最终,如果不再请求该数据,它将在缓存中被后来查询进入缓存的新数据覆盖。
在某些系统上,硬盘本身有额外的缓存——从磁盘获取的数据一次可能会被磁盘 Controller 保存在缓存中。这是因为最近从磁盘中获取的数据很可能会再次获取。
因此,一旦从查询提示请求数据,它就会被缓存——可能由磁盘 Controller 和数据库本身缓存。
在您的应用程序中,这不太可能发生,因为新用户在不同时间访问并访问他们自己的数据(在他们到达之前不太可能被缓存)。
加速数据库的最常见方法之一是增加服务器可用的内存量,以便可以缓存更多数据。
有关更多信息,请阅读 MySQL's docs on the MySQL Query Cache 中的一些内容
关于mysql 慢查询 sql 语句在 mysql 提示符下执行时不那么慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520139/