mysql 慢查询 sql 语句在 mysql 提示符下执行时不那么慢

标签 mysql mysql-slow-query-log

我在我的服务器中启用了 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/

相关文章:

java - Hibernate: native SQL 查询重复列结果

mysql - ISNULL 如果一列或两列为空则为 0

mysql - 学说多次刷新提交一次

mysql - QtRuby 无法创建 QDate 来填充 QDateEdit

php - 如何使用 InnoDB 表加速缓慢的 MySQL UPDATE 查询

mysql慢日志: simple select query takes 26 seconds

mysql - 清除 MYSQL 慢查询日志 - Rails

MySQL 错误 1054 :UNKNOWN COLUMN 'amount' in field list

mysql - Amazon AWS RDS MySQL 慢查询日志