对于在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进行比较。它更像是“比较绿色苹果”和“常规(红色)苹果”,两者都是苹果,但它们完全是完全不同的水果。