我正在试图弄清楚要看什么,以试图理解为什么我看到在AWS RDS MySql数据库上的COUNT WHERE查询与在本地CentOS服务器上运行的MariaDB数据库上的相同查询相比,性能要慢得多。
这些查询如下所示:
SELECT COUNT(serial) FROM devices
    WHERE device_family="foo"
      AND serial > 1000
      AND serial < 10000000;在本地实例上,即使设备系列有200M左右的记录,类似这样的查询也会在很短的时间内返回。在RDS上,这需要很多分钟。
我的DB经验有限,我想知道如何理解这里发生的事情。
RDS实例是db.m5.xlarge,4 vCPU,16GBRAM,预配置IOPS (SSD) 1000IOPS。我将IOPS提高到10K,但只看到了适度的改进。
相关表中的数据从本地服务器迁移到RDS,本质上是相同的:1.50M条记录,只有几个字段,没有关系或外键(它是数据库中唯一的表)。
索引(显示中的索引)是一致的。
不确定还有什么是相关的,或者从这里开始要去哪里?
发布于 2021-01-12 09:52:39
您的本地实例和RDS实例之间可能存在差异的原因有很多。除了在两种环境中对查询运行EXPLAIN之外,您还可以考虑添加以下索引:
CREATE INDEX idx ON devices (device_family, serial);如果使用此索引,将完全覆盖WHERE子句,并应加快查询速度。您还可以尝试交换索引中这两列的顺序。
https://stackoverflow.com/questions/65676890
复制相似问题