0

我需要一些帮助或指导来寻找与 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 select * from 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

当我从分析中添加查询时,基本上是相同的。

所以问题是额外的延迟来自哪里?

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

4

1 回答 1

1

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

鉴于本地 EC2 实例的延迟为零,但是 RDS 可能会有更多的延迟;然而,延迟效应不会导致查询性能变慢。

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

  1. 数据大小(卷及其架构)
  2. MySQL 版本
  3. EC2 实例与 RDS 中的 IOPS
  4. RDS 卷大小(更大的预置存储将改善 I/O)
  5. RDS 的多可用区设置(需要更多额外开销)

正如它所说,比较基于 EC2 的本地运行 MySQL 和基于 RDS 的 MySQL 是not直接从 Apple 到 Apple 进行比较。它更像是比较青苹果和普通(红)苹果,两者都是苹果,但它们是完全不同的水果。

于 2014-06-10T15:11:39.900 回答