Mysql 8 中磁盘 IO 达到 100%

问题描述 投票:0回答:2

我在 Centos 7 和 Centos 8 上使用 MySQL 8,并且在 27GB 表上运行一个简单的计数语句。通常,在 MySQL 5.7 中大约需要 10 秒,但在 MySQL 8 中,大约需要 10 分钟。我发现每当运行这个命令时,我的磁盘 IO 就会卡到 100%。有没有运气

SELECT COUNT(*) FROM test.logs_sync

mysql query-optimization
2个回答
0
投票

事实上问题已经在下面的解决方法中修复,现在只需要 5 秒

SELECT COUNT(*) FROM test.logs_sync where id>0;

0
投票

我怀疑第一个查询是通过读取整个表来执行的,第二个查询是通过读取索引来执行的。 (假设所有行的 id>0 ofcoz。)

您可以尝试运行“分析表 test.logs_sync”并查看是否会更改查询优化器执行计划。

在运行该声明之前采取通常的预防措施,因为计划可能会受到不利影响。此外,结果可能是“持久的”,也可能不是“持久的”,或者根据设置定期重新计算。

爱好者方法将在 ANALYZE 语句之前对两个查询运行 EXPLAIN 语句。

© www.soinside.com 2019 - 2024. All rights reserved.