小编Sum*_*nha的帖子

为什么从 RDS 获取 10,000 次查询结果所花费的时间如此不均匀?(实验)

tl;dr:为什么当从 EC2 请求时从 RDS 获取 SELECT 语句的结果 10,000 次所花费的时间如此不均匀?

用中小型RDS服务器的结果更新问题

在尝试使用 AWS 检查获取 SQL 查询结果所花费的时间时,我得到了以下非常不均匀的结果:

我写了一个 PHP 代码来报告我从服务器获取n次SELECT 查询的结果所花费的时间。

while($flag<n)
    {
       $t=microtime(true);
       $result=$con->query($q);
       $t=microtime(true)-$t;
       $total+=$t;
       $flag++;
    }
Run Code Online (Sandbox Code Playgroud)

环境:

  • 所有交易都在 AWS 的私有 vpc 内完成
  • 所有服务器都在不同的区域
  • MySQL 在每台服务器上的配置是:EC2 上的 MySQL:版本 = 5.6,RDS 上:5.5,query_cache_size = 16777206,query_cache_state = ON。
  • 数据库 A 大型数据库 ~= 5GB,查询的表有 ~= 20000 行。

服务器 :

  • EC2 A,可用区:us-east-1e,类型:t2.micro。
  • EC2 B,可用区:us-east-1b,类型:t2.micro。
  • RDS 可用区:us-east-1c,类型:db.t2.micro、db.t2.small(更新)、db.t2.medium(更新)

结果 :

执行 SELECT 查询的 10,000 次循环所花费的时间:

  • 请求服务器 B、数据库服务器 B

5 次试验的结果是:20、21、20、20、21(全部以秒为单位)

  • 请求服务器A,数据库服务器B

5 次试验的结果是:33、33、33、33、3(全部在秒内)

  • 请求服务器A,数据库服务器RDS(微) …

mysql latency amazon-ec2 amazon-web-services amazon-rds

4
推荐指数
1
解决办法
3092
查看次数