"slow queries log"中的 MYSQL 慢查询 - 但相同的查询手动运行速度非常快

标签 mysql sql database performance

如标题所述,在我的数据库中,各种查询出现在慢速查询日志中,但是当我手动运行它们时,它们运行速度提高了 10 倍。

例如,一个相对简单的选择查询,有几个按参数排序的查询,在日志中通常需要 100 秒(是的,表非常大)......但是当我自己在同一个数据库上运行它时,它需要 2 秒左右。

我检查了服务器的性能,当时似乎没有特别的减速或瓶颈,在那段时间也没有很多查询需要很长时间,只有一个。

如何开始分析这样的问题?

感谢帮助

最佳答案

当有问题的查询进入慢速日志时,您的系统可能更忙。

如果 rows_examined 大于结果集,慢速日志可能表明索引没有被充分利用。因此,执行时间应该被视为查询有问题的线索,但 rows_examined 会给你更多明确的答案。

查询时间在高负载服务器上是一个较差的性能度量,因为在繁忙的服务器上任何查询都可能很慢。您应该使用 EXPLAIN 和 SHOW PROFILE 来分析您的查询并改进它们,这样它们就不会给您的服务器带来太多负载。

在分析查询时使用SELECT SQL_NO_CACHE ...,这样结果就不会存储在查询缓存中,否则同一查询的后续执行可能会使用查询缓存,从而扭曲查询的任何时间。

关于 "slow queries log"中的 MYSQL 慢查询 - 但相同的查询手动运行速度非常快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386579/

相关文章:

MySQL-更新插入的自动增量主键到自定义值

php - 从价格栏中获取 0-5000 和 50001-10000 之间的价格?

mysql - 用其他列值更新列

mysql - ColdFusion 8 在没有数据源的情况下访问 MySQL 数据库

mysql - 为什么我的 rand() 代码在 mysql 中不起作用?

Mysql 选择昨天的值

python - Django 通过多对多 ORM 对象中的多个标签进行过滤

sql - 使用 JSON_MERGPATCH 后更新 json 列

Java - 持久性和实体类

php - MySQL用另一个表替换列中的逗号分隔值找到旧值替换为新值