我需要一些帮助或指导来了解在哪里查找与 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 实例与 RDS 中的 IOPS
- RDS 卷大小(更大的预配置存储将改善 I/O)
- RDS 的多可用区设置(将需要更多额外开销)
正如上面所说,比较基于 EC2 的本地运行 MySQL 和基于 RDS 的 MySQL 不是
直接进行 Apple 与 Apple 的比较。它更像是比较青苹果和普通(红)苹果,两者都是苹果,但它们是完全不同的水果。
关于mysql - RDS over MySQL 出现奇怪的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24143130/