使用 AWS Graviton3 提升 Amazon RDS 性能:基准测试
主要重点
AWS 现已允许用 AWS Graviton3 处理器运行 Amazon RDS 实例。Graviton3 相比于 Graviton2 在性能上提升高达 25。基于 Graviton3 的 RDS 实例在开源数据库上的报价/性能改善可达 27。在 2023 年 4 月,AWS 宣布 可以使用 AWS Graviton3 处理器来运行 Amazon 关系数据库服务Amazon RDS实例。AWS Graviton3 于 2022 年 5 月发布,它基于定制设计的 ARM 架构,使用 ARM Neoverse 核心,优化了性能和能效。AWS Graviton3 提供的计算性能较 Graviton2 提升了最多 25。
客户正在考虑是否将 Amazon RDS 工作负载转移到 AWS Graviton3,但许多人希望了解在典型的关联数据库管理系统RDBMS工作负载中是否能够实现性能优势。
在本文中,我们将比较 AWS Graviton2 和 AWS Graviton3 在 Amazon RDS 支持的开源引擎上的性能,以从数据库中心的角度验证它们。我们的基准配置显示,基于 AWS Graviton3 的实例在开源数据库 RDS 上相比基于 Graviton2 的实例提供了最多 27 的价钱/性能改进以按需定价为基础。
概述
我们在 euwest1 地区运行了最新版本的支持 AWS Graviton 的引擎的 Amazon RDS 基准测试,并比较了由 AWS Graviton2 和 AWS Graviton3 处理器驱动的不同类型的数据库实例的基准结果。
我们测试了 Amazon RDS for MySQL 8032、Amazon RDS for PostgreSQL 152 和 Amazon RDS for MariaDB 10610,具体实例为:
实例类型vCPU内存 (GiB)dbm6gxlarge (AWS Graviton2)416dbm7gxlarge (AWS Graviton3)416基准测试和测试框架
我们使用 sysbench 来运行基准测试并收集结果。Sysbench 是一个基于 LuaJIT 的可脚本化多线程开源工具,提供了一组 OLTP 类似的数据库基准测试。
我们使用 Amazon Elastic Compute CloudAmazon EC2实例 (m6g4xlarge) 来启动测试会话。我们选择 4xlarge 实例以避免潜在的网络带宽、CPU 或内存瓶颈。我们在同一可用区域内运行所有实例,以最大限度地降低延迟。具体设置如下图所示。
我们的设置可以手动重复或利用我们创建的 AWS CloudFormation 模板。 下载模板。
我们使用 sysbench 提供的内置测试准备功能创建了两个包含 200 万条记录的表。对于 MySQL 和 MariaDB 实例,我们运行以下脚本:
bashsysbench /usr/sysbench/src/lua/oltpreadwritelua mysqlhost=ltmysqlhostgt mysqluser=ltmysqlusergt mysqlpassword=ltmysqlpasswordgt mysqlport=3306 tables=2 tablesize=2000000 prepare
对于 PostgreSQL 实例,我们运行以下脚本:
bashsysbench /usr/sysbench/src/lua/oltpreadwritelua pgsqlhost=ltpgsqlhostgt dbdriver=pgsql pgsqluser=ltpgsqlusergt pgsqlpassword=ltpgsqlpasswordgt pgsqlport=5432 pgsqldb=sbtest tables=2 tablesize=2000000 prepare
设置 RDS 实例
下一个任务是 设置 RDS 实例,在其上启动基准测试。对于每个引擎,我们创建了一个 db[m6gm7g]xlarge 实例分别用于 AWS Graviton2 和 AWS Graviton3 处理器。
我们使用了配置的默认值,例外如下:
一元机场·cn与 EC2 实例相同的可用区域,以最大限度地减少延迟。单可用区部署模式。使用 10000 供应的 IOPs 和 200 GB 存储空间的 Amazon Elastic Block StoreAmazon EBSio1 卷。这样选择是为了避免 EBS 存储成为性能瓶颈,200GB 是 10000 IOPs 所需的最小存储空间。将 maxpreparedstmtcount 参数设置为 MySQL 和 MariaDB 引擎允许的最大值。参考 如何修改 Amazon RDS DB 参数组的值 获取详细信息。这使得 sysbench 能够启动所需数量的线程。基准测试
我们希望在整个 30 分钟的测试期间,数据库的 CPU 利用率保持在 99 以上。为此,sysbench 运行命令在 2 个表和 200 万条记录上运行了 300 条线程,这意味著有 300 个同时活跃的数据库连接。
我们使用了 sysbench 的默认操作模式,该模式在达到测试超时之前迭代运行以下查询:五个 SELECT 查询、两个 UPDATE 查询、一个 DELETE 查询和一个 INSERT 查询。
我们在 MySQL 和 MariaDB 实例上运行以下脚本:
bashsysbench /usr/sysbench/src/lua/oltpreadwritelua threads=300 time=1800 reportinterval=10 mysqlhost=ltmysqlhostgt mysqluser=ltmysqlusergt mysqlpassword=ltmysqlpasswordgt mysqlport=3306 tables=2 tablesize=2000000 run
我们在 PostgreSQL 实例上运行以下脚本:
bashsysbench /usr/sysbench/src/lua/oltpreadwritelua threads=300 time=1800 reportinterval=10 pgsqlhost=ltpgsqlhostgt dbdriver=pgsql pgsqluser=ltpgsqlusergt pgsqlpassword=ltpgsqlpasswordgt pgsqlport=5432 pgsqldb=sbtest tables=2 tablesize=2000000 run
我们运行测试脚本五次,以确保基准结果的一致性。
原始性能结果
在所有测试中,基于 AWS Graviton3 的实例dbm7g表现优于基于 AWS Graviton2 的实例。在每秒查询数据方面,dbm7g 实例平均运行的查询数量比 dbm6g 多 29。结果显示,根据不同的 RDBMS 引擎,dbm7g 相对于 dbm6g 提供了 19 到 34 的改进。
延迟测试显示了类似的趋势,dbm7g 在 dbm6g 上平均减少 26 的延迟。将 dbm7g 与 dbm6g 进行比较,每个引擎的具体结果显示,MariaDB 的延迟减少了 34、MySQL 减少了 29、PostgreSQL 减少了 19。
每美元性能
由于 AWS Graviton3 基于实例的价格与 AWS Graviton2 基于实例的价格不同,我们想看看经价格调整后的性能如何。以下表格列出了撰写时 euwest1 地区的 RDS 单可用区价格。
引擎实例类型每小时价格美元PostgreSQLdbm6gxlarge (AWS Graviton2)0352PostgreSQLdbm7gxlarge (AWS Graviton3)0372MariaDBdbm6gxlarge (AWS Graviton2)0336MariaDBdbm7gxlarge (AWS Graviton3)0372MySQLdbm6gxlarge (AWS Graviton2)0336MySQLdbm7gxlarge (AWS Graviton3)0372我们将测试结果标准化到每小时价格上,以便公平地比较每美元的性能。dbm6g 的标准化结果由于价格较低而接近其他实例。不过,平均来说,dbm7g 运行了 22 更多的查询,dbm6g 的价格/性能优势在 MariaDB 上达到 27。
在考虑平均延迟时,此趋势仍然有效。dbm7g 每美元延迟最低,较 dbm6g 减少 20。

清理
完成测试后,请保存基准结果并删除所创建的资源。如果您使用的是提供的 CloudFormation 模板,可以在 AWS 控制台中导航到 CloudFormation,选择堆栈您在部署时会给它命名,然后选择删除。
结论
如果您计划使用 Amazon RDS 运行 RDBMS 工作负载,您有多种实例类型可供选择,并且每年都在不断扩展。
基于 Graviton3 的实例在性能上相对基于 Graviton2 的实例提供了高达 30 的提升,以及高达 27 的性价比改进根据按需定价,具体取决于数据库引擎、版本和工作负载。
dbm7g 和 dbr7g 数据库实例在 Amazon RDS for PostgreSQL 152 及更高版本、143 及更高版本、134 及更高版本、Amazon RDS for MySQL 8028 及更高版本、以及 Amazon RDS for MariaDB 10114 及更高版本、10610 及更高版本、10517 及更高版本和 10426 及更高版本均受支持。这些数据库实例现在已在以下地区的 Amazon RDS 上提供:美国东部北维吉尼亚、俄亥俄州、美国西部俄勒冈州、亚太地区孟买、新加坡、悉尼、东京和欧洲法兰克福、爱尔兰。有关价格和地区可用性的完整信息,请参阅 Amazon RDS 价格页面。
立即开始使用 Amazon RDS。
作者介绍
Davide Coccia 是一名技术帐户经理,专注于帮助客户在 AWS 上构建、部署和运行安全、可靠且具成本效益的工作负载。他有分析咨询的背景。在工作之余,他喜欢跑步、踢足球也就是说足球和学习各种新事物。
Stefano D’Alessio 是一名技术帐户经理,专注于关联数据库服务Amazon RDS 和 Aurora。他与客户合作,提供有关其 AWS 工作负载的指导和建议,利用最佳实践和创新。闲暇时,他喜欢跑步和打网球、板球。
Francesco Martini 是一名技术帐户经理,帮助 AWS 客户构建可靠且具成本效益的系统,同时实现运营卓越。他是一位热衷于技术的建造者,拥有全栈开发的背景。对于运动,他尤其喜欢足球和网球。