6

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

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

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

我怎样才能开始分析这样的问题?

谢谢您的帮助

4

1 回答 1

6

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

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

查询时间是高负载服务器上性能不佳的衡量标准,因为任何查询在繁忙的服务器上都可能很慢。您应该使用 EXPLAIN 和 SHOW PROFILE 来分析您的查询并改进它们,以便它们不会给您的服务器带来过多的负载。

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

于 2012-04-30T16:12:04.290 回答