程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢?

开发过程中遇到与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢的问题如何解决?下面主要结合日常开发的经验,给出你关于与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢的解决方法建议,希望对你解决与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢有所启发或帮助;

我正试图弄清楚该看什么,以试图理解为什么我在 AWS RDS MysqL 数据库上看到 COUNT WHERE 查询的性能比在本地 CentOS 上运行的 MariaDB 数据库上的相同查询慢得多服务器。

查询看起来像:

SELECT COUNT(serial) FROM devices
    WHERE device_family="foo"
      AND serial > 1000
      AND serial < 10000000;

在本地实例上,即使设备系列有 20M 左右的记录,这样的本地实例查询也会在短时间内返回。在 RDS 上需要很多分钟。

我的数据库经验有限,我想知道如何理解这里发生的事情。

RDS 实例为 db.m5.xlarge,4 个 vcpu,16 gb ram,Provisioned IOPS (SSD) 1000 IOPS。我将 IOPS 提高到 10K,但只看到了适度的改进。

相关表中的数据是从本地服务器迁移到 RDS 的,本质上是一样的:150M 记录,包含少量字段,没有关系或外键(目前是 DB 中唯一的表)。

索引(SHOW INDEXES FROM)是一致的

不确定还有什么是相关的或从哪里开始?

解决方法

本地实例和 RDS 实例之间可能存在差异的原因有很多。除了在两种环境中对查询运行 EXPLAIN 外,您还可以虑添加以下索引:

CREATE INDEX idx ON devices (device_family,serial);

如果使用此索引,将完全覆盖 WHERE 子句并应加快查询速度。您也可以尝试交换索引中两列的顺序。

大佬总结

以上是大佬教程为你收集整理的与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢全部内容,希望文章能够帮你解决与本地服务器上的 MariaDB 相比,RDS MySql 上的 COUNT WHERE 性能较慢所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。