1

我有一个 MySQL (InnoDB) 数据库,其中包含行数在 1 000 000 到 50 000 000 之间的表。晚上有一个聚合作业,它计算一些信息并将它们写入报告表。

拳头作业执行速度非常快。每个查询在 100 毫秒到 1 秒之间执行。之后,几乎每个查询都非常慢。

示例查询是:

SELECT count(*) FROM tableA 
  JOIN tableB ON tableA.id = tableB.tableA_id

该查询的执行计划显示将使用两个表的索引。

重要的是 CPU、I/O、内存使用率非常低。MySQL 服务器版本:5.5.28,默认设置(刚刚安装在 Windows 7 开发人员计算机上)。

4

2 回答 2

0

从提供的信息很难判断。我假设您已经完成了 EXPLAIN 等操作。在以前的经验中,我的一个查询突然变慢了,我意识到某个字段突然填充了大量数据。可以尝试使用 count(tableA.id),而不是使用 count(*)。

看看这是否有帮助或提供更多信息来调试。

于 2012-11-05T09:53:28.803 回答
0

也许,这不是真正的查询,而是写入报告表,这很慢。我会尝试两件事:

  • 衡量报告表insert的性能update
  • 重新排序您的工作。取一个慢的到前面,看第一个作业快还是先跑的作业快
于 2012-11-05T12:26:31.667 回答