EC2 Small 与 Amazon RDS - 哪个对 MySQL 来说速度更快?
(我有一个数据库,索引良好且经过调整。每个表大约有 10,000 行。)
演出怎么样?
答案1
首先,我不使用 RDS - 所以不要认为这是绝对的。与 EC2 一样,RDS 按实例类型分类,因此在计算方面,您得到的是相同的。区别在于“配置”和硬件专用程度。
RDS 优势:
- 硬件专用于运行 RDS - 不与“通用”实例共享
- 可能更好的网络 I/O
- 提供良好、通用、开箱即用的配置
- 为您管理更新
- 可能更容易设置基本复制
- 良好的配置界面
- 费用中包含备份存储
RDS 缺点:
- 成本比同等 EC2 实例更高(高出约 40%)
- 有限的定制
- 性能变化很大(尤其是磁盘 I/O)
- 如果使用单个 RDS 实例,所需的维护可能会导致停机(通过多可用区部署可以避免)
- 这更不受你的控制
EC2 优势:
- 可以设置 RAID 阵列来增加磁盘 I/O
- 在定制(访问 my.ini)和维护方面具有更大的灵活性
- 更低的花费
- 如果调整得当,应该能够实现相同或更好的性能
- 允许更传统的复制和故障转移
- 可以设置自定义监控/分析 - 并直接处理问题
EC2 的缺点:
- 需要更多技能/精力来设置
- “开箱即用”的性能不如 RDS
- 网络 I/O 不太稳定
我建议如下:
- 如果你不想麻烦和/或不能令人满意地调整 MySQL - 那就使用 RDS
- 如果网络 I/O 会产生很大影响(通常是同时使用多个线程的设置)——RDS 将提供更稳定的性能
- 如果你需要细粒度的控制(或者不需要更好的性能)或者注重成本——那就选择 EC2
- 如果你想在成长过程中学习 MySQL,那就选择 EC2
对于任何特定的用例,最好的选择可能是对每个用例进行基准测试,并查看它们的堆叠情况 - 毕竟每个设置的性能都会有所不同。
进一步阅读:
答案2
我无法对@cyberx86 的答案发表评论,因此我不得不自己回答一下。回复:RDS DB 性能远超 EC2 DB 开箱即用性能...
我一直在逐步削减我的 AWS 资源 - 尽可能将中型实例更改为小型实例,在应用程序级别进行优化等。我目前正在测试 MariaDB 的 RDS 小型实例与使用 MariaDB 的 EC2 小型实例(可能每月节省 8 美元)。除了设置我想要的默认字符集和排序规则并将 Aria 设为默认表类型之外,我没有尝试在 EC2 实例上优化 MariaDB。
我的测试集是一个包含 150 个表的数据库,其中大多数表的行数少于 1000 行,一个表的行数约为 500k,另一个表的行数为 10mil。存档大小(tarred 和 gzip 压缩的 SQL,带有 drop if exist/create 样板)略小于 90m。安装在 DB 中时,大小为 1.4GB。以下所有操作都从同一区域(美国东部)的附加 EC2 实例运行,使用 或mysql
视mysqldump
情况而定。RDS 实例和调用 EC2 实例是 us-east-1a,EC2 MariaDB 实例是 us-east-1c。
Export from RDS-small MariaDB to the archival format averaged 51s across 10 tests.
Export from EC2-small with MariaDB to the archival format averaged 40s across 10 tests.
Import to RDS-small MariaDB from the archival format averaged 8:17 across 10 tests.
Import to EC2-small with MariaDB from the archival format averaged 5:33 across 10 tests.
这不是一项科学测试,但我试图在执行过程中保持一致。这个结果不是我所期望的。我建议任何问“EC2 是使用 DB 还是 RDS?”问题的人从他们的应用程序操作中找出一两个基准并进行测试……然后再找几个,这就是我今天要做的。