对于在RDS上与我们的mysql相关的奇怪问题,我需要一些帮助或指导。

我们有两种环境,一种在EC2上本地安装了Mysql,另一种是RDS mysql实例。两者具有相似的硬件,并且具有相同的数据。

在这两种情况下,我们都运行相同的存储过程,都从第三种源(EC2实例)运行

在EC2实例上
启用分析后,查询将在0.33秒内运行
查询正常,受影响的0行(0.33秒)

显示个人资料;

0.00012025呼叫crmDisplayDonorProfile(3139,21)
0.000048删除临时表(如果存在)tblProfile
0.022021如果不存在则创建临时表donCodes(cd char(1))
0.0000755从donCodes中删除
0.000111插入donCodes(cd)值(substring(strParse,1,1))
0.0041805删除临时表donCodes
0.02201925如果不存在donCodes(cd varchar(2)),则创建临时表
0.00007275从donCodes中删除
0.0040465删除临时表donCodes
0.02208925如果不存在donCodes(cd char(1)),则创建临时表
0.0001155从donCodes中删除
0.00015625插入donCodes(cd)值(substring(strParse,1,1))
0.00342425删除临时表donCodes
0.02178325如果不存在donCodes(cd varchar(2)),则创建临时表
0.0001055从donCodes中删除
0.00390075删除临时表donCodes
0.00042475选择*从tblProfile

0.00571425删除临时表tblProfile

在RDS实例上

查询正常,受影响的0行(1.84秒)

0.00010275呼叫crmDisplayDonorProfile(3139,36)
0.00006275删除临时表(如果存在)tblProfile
0.02370575如果不存在donCodes(cd char(1)),则创建临时表
0.00007175从donCodes中删除
0.00010025插入donCodes(cd)值(substring(strParse,1,1))
0.0038815删除临时表donCodes
0.0226735创建临时表(如果不存在)donCodes(cd varchar(2))
0.00006475从donCodes中删除
0.00182825删除临时表donCodes
0.0253065如果不存在donCodes(cd char(1)),则创建临时表
0.0001185从donCodes中删除
0.00015075插入donCodes(cd)值(substring(strParse,1,1))
0.00297025删除临时表donCodes
0.0191115如果不存在donCodes(cd varchar(2)),则创建临时表
0.00009825从donCodes中删除
0.00280375删除临时表donCodes
0.0002995选择*从tblProfile

0.00460175删除临时表tblProfile

当我从配置文件中添加查询时,它们基本相同。

所以问题是额外的延迟将来自何处?

任何想法或方向将不胜感激。

最佳答案

我建议您进一步研究“类似硬件”的概念。

考虑到本地EC2实例的延迟为零,但是RDS的延迟可能会更多。但是,延迟影响不会降低查询性能。

您能否在本地EC2 MySQL与RDS中重新比较这些因素


数据大小(卷及其架构)
MySQL版本
EC2实例中的IOPS与RDS
RDS卷大小(更大的预配置存储将改善I / O)
RDS的多可用区设置(将花费更多的额外开销)


在比较您的基于EC2的本地运行MySQL和基于RDS的MySQL时,直接将Apple与Apple进行比较。它更像是“比较绿色苹果”和“常规(红色)苹果”,两者都是苹果,但它们完全是完全不同的水果。

08-07 17:25