Php 从本地MySQL服务器切换到Amazon RDS后,性能急剧下降
我刚从本地MySQL服务器(在EC2微实例上)切换到RDS实例,我看到速度急剧下降 对RDS的一个SQL请求等于对本地DB的40个请求 大量的SQL请求使得脚本速度非常慢。有一个表格,显示网站页面生成的时间: 本地MySQL服务器vs RDSPhp 从本地MySQL服务器切换到Amazon RDS后,性能急剧下降,php,mysql,amazon-web-services,amazon-rds,Php,Mysql,Amazon Web Services,Amazon Rds,我刚从本地MySQL服务器(在EC2微实例上)切换到RDS实例,我看到速度急剧下降 对RDS的一个SQL请求等于对本地DB的40个请求 大量的SQL请求使得脚本速度非常慢。有一个表格,显示网站页面生成的时间: 本地MySQL服务器vs RDS +----------------------------------+ | Requests | Local server* | RDS* | +----------------------------------+ | 1 |
+----------------------------------+
| Requests | Local server* | RDS* |
+----------------------------------+
| 1 | 220 | 115 |
| 3 | 200 | 60 |
| 10 | 180 | 25 |
| 20 | 150 | 10 |
| 40 | 115 | 5 |
+----------------------------------+
*-脚本运行速度1/n,例如200表示1/200秒
因此,基本上,页面包含40个非常简单和快速的SQL请求,这些请求通常渲染0008秒,RDS渲染0.2秒,这大大降低了速度(x23!)
事实
- EC2实例和RDS实例在同一可用区
us-west-1b
- MySQL缓存已启用(
,query\u Cache\u type=1
,query\u Cache\u size=16777216
),我可以通过query\u Cache\u limit=1048576
显示全局变量,如“query\u Cache\u type”
- 我运行的查询是相同的(我只是多次运行相同的SQL语句)
,其中select*from user,其中id=100
是id
,如果使用MySQL客户端执行它,工作速度非常快(0.0005秒)唯一索引
- 我使用PDO持久连接
我知道有一个网络因素现在,它是远程服务器,客户端和服务器之间有一些延迟,但我没想到会有这么大的减少,这是正常的还是我可以做些什么?很正常。仅仅是登录时的握手就可以在我的体验中增加~50毫秒。当数据库不在同一台服务器上时,这是您不得不面对的更重要的权衡之一。另外,从技术上讲,RDS并不是为纯粹的性能而构建的。如果您想这样做,您需要查看红移。您使用PDO持久连接吗?是的,忘了提到这一点。问题更新了这一事实。