Amazon RDS MySQL实例执行速度非常慢

时间:2013-04-16 11:34:25

标签: mysql amazon-web-services amazon-s3 phpmyadmin amazon-rds

我在Amazon EC2(新加坡地区)上发布了我的网站,我使用MySQL RDS实例进行数据存储。除了表现之外,一切都很好。

我看来,我的所有查询,特别是select语句,执行速度非常慢。如果我在我的本地PC上查看此问题,那么它运行良好。但是当我试图从RDS实例获取数据时,它非常慢。一些select语句需要2-3秒才能获取数据。

我已正确调整所有表索引,并根据需要进行规范化/反规范化。我已在RDS自定义参数组上进行了所有必要的设置(例如 max_connection buffer 等)。我不知道我是否遗漏了一些东西,但它对我没有用 - 性能没有增加。

那么,有人可以帮我解决这个问题吗?

7 个答案:

答案 0 :(得分:28)

值得注意的是,无论出于何种原因,默认情况下,RDS中的MySQL查询缓存为OFF。我们本周学到了很多困难。

这对初始查询的执行没有帮助,但它可能会加快速度。

重新启用查询缓存:

  1. 登录RDS控制台
  2. 单击您的RDS实例以查看其详细信息
  3. 编辑数据库参数组
  4. 请务必同时设置query_cache_sizequery_cache_type
  5. (免责声明:我不是DBA,所以我可能还有其他的东西在这里丢失)

答案 1 :(得分:8)

让RDS和EC2实例不在同一区域但在同一可用区域中以减少延迟非常重要。

我在爱尔兰的EC2上安装了一个API,并将数据库移动到我们为另一个项目设置的美国弗吉尼亚州的MySQL集群中,并且每次SQL查询的往返都使API无法使用。

答案 2 :(得分:3)

对我而言,它与MySQL无关,而是与t2.medium上的实例类型无关。问题是我没有CPU积分,因为数据库上的负载太高而且余额一直在下降,直到最后,我的每小时收入要少得多。

以下是我在RDS CloudWatch中看到的CPU信用使用情况:

enter image description here

如果您遇到同样的问题,可能需要切换到其他实例。以下是实例类型列表:

https://aws.amazon.com/rds/instance-types/

希望这有帮助。

答案 3 :(得分:2)

RDS MySQL性能可以通过以下方式增加,假设系统具有更高的读取率:

  1. 使用较大的实例类型,它们具有更好的NW带宽。示例AWS Quadruple EXL带有1,000 Mbps带宽。
  2. 使用PIOPS存储,您可以从MySQL DB中提取12,500 IOPS的16KB
  3. 如果执行了大量读取,请添加一个或多个只读副本以提高读取性能
  4. 应用以下标准做法:调整查询,应用索引等

答案 4 :(得分:2)

首先,我强烈建议您使用

查看这些查询
  

显示完整的过程列表

您可以在SHOW FULL PROCESSLIST

上详细了解相关信息

这将显示每个查询所花费的时间。

然后你可以使用

  

EXPLAIN

您可以在EXPLAIN

上详细了解相关信息

这将显示您是否需要对查询进行一些增强

答案 5 :(得分:0)

您可以通过使用分析来查看查询占用时间的位置。使用以下查询:

  1. set profiling = 1
  2. 执行您的选择查询
  3. 显示个人资料
  4. 这将告诉您查询的状态以及查询花费时间的位置。如果分析返回的所有时间总和小于查询的实际执行时间,则可能是网络带宽等其他因素可能是其原因。

答案 6 :(得分:0)

始终应在同一AWS可用区中部署源和rd,以降低网络延迟,并应在VPC中为RDS创建专用端点链接,以通过内部网络而不是通过Internet路由RDS端点。

参考:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/vpc-interface-endpoints.html