亚马逊AWS官方博客
全新 —— Amazon RDS Optimized Reads 与 Optimized Writes
早在 2009 年,我就写过一篇题为“Amazon RDS 简介:Amazon Relational Database Service”的文章并向您介绍过 Amazon RDS:
RDS 让您能够更轻松地在云中设置、操作和扩展关系数据库。您可以直接访问数据库,不必担心基础设施配置、软件维护或常见的数据库管理任务。
自那次发布以来,我们继续尽最大努力帮助您排忧解难,同时还努力使 RDS 更具成本效益。例如,我们最近推出了 Graviton2 数据库实例(可使性价比提升高达 52%)和新的多可用区部署选项(可使性价比提升高达 33%,其事务提交延迟可提速两倍)。
今天,我想向大家介绍两项新功能,它们将加速 Amazon RDS for MySQL 工作负载:
Amazon RDS Optimized Reads 通过将 MySQL 生成的临时表放置在与主机服务器物理连接的基于 NVMe 的 SSD 块存储上,实现更快的查询处理。借助 Optimized Reads,可将使用临时表查询(例如涉及排序、哈希聚合、高负载联接和公用表表达式(CTE)的查询)的执行速度最多提高 50%。
Amazon RDS Optimized Writes 可在不收取额外费用的情况下将写入事务吞吐量提高多达两倍,且能保持相同的预调配 IOPS 水平。Optimized Writes 非常适合生成大量并发事务的写入密集型工作负载。其中包括数字支付、金融交易平台和在线游戏。
Amazon RDS Optimized Reads
Amazon RDS for MySQL(无 Optimized Reads)可将临时表放置在 Amazon Elastic Block Store(Amazon EBS)卷上。Optimized Reads 可将临时对象上的操作从 EBS 转移至附加到 r5d、m5d、r6gd 和 m6gd 实例的实例存储。因此,用户可更有效地利用 EBS 卷对持久性数据进行读取和写入,并执行刷新、插入缓冲区合并等后台操作。该功能不仅能够提高效率,而且对某些使用案例非常有用:
- 包括复杂表表达式、派生表和分组操作的分析查询。
- 处理未优化的应用程序查询的只读副本。
- 具有复杂操作(例如
GROUP BY
(分组依据)和ORDER BY
(排序依据))的按需或动态报告查询,无法始终使用适当的索引。 - 使用内部临时表的其他工作负载。
您可以监控 MySQL 状态变量 created_tmp_files
,以查看临时表的创建率。
实例上可用的实例存储量会因实例系列和实例大小而异。具体指南如下:
实例系列 | 最小存储量 |
最大存储量 |
m5d | 75GB | 3.6TB |
m6gd | 237GB | 3.8TB |
r5d | 75GB | 3.6TB |
r6gd | 59GB | 3.8TB |
Optimized Reads 的使用
如需使用这项新功能,请选择 MySQL 引擎版本 8.0.28 或更高版本,然后在上方列出的任意一种实例上启动 Amazon RDS for MySQL:
您可通过查看新的 CloudWatch 指标(包括 FreeLocalStorage、ReadIOPSLocalStorage、WriteIOPSLocalStorage 等来监控实例存储的使用情况。(有关新指标和现有指标的完整列表,请参阅用户指南)。
Optimized Reads 适用于合格的数据库实例类型可用的所有 AWS 区域。
Amazon RDS Optimized Writes
默认情况下,MySQL 会使用磁盘上的双写缓冲区,该缓冲区为内存和最终磁盘存储之间的中间停靠点。缓冲区的每个页面为 16KiB,但会以 4KiB 的区块写入最终磁盘存储。执行此额外步骤可维护数据的完整性,但也会消耗额外的 I/O 带宽。如需运行我之前描述的写入密集型工作负载,可能需要配置额外的 IOPS 以满足您的性能要求和吞吐量要求。
Optimized Writes 使用了统一的 16KiB 数据库页面、文件系统块和操作系统页面,并以原子方式将它们写入存储(全部或无),从而将性能提高至前文所述的两倍。
Optimized Writes 的使用
如需使用 Optimized Writes,您必须使用 MySQL 8.0 的最新版本在 db.r5b 或 db.r6i 实例上创建新的数据库实例:
此设置会影响数据库快照的格式,并产生两大重要影响:
- 您不能为了启用 Optimized Writes 而将现有的未优化快照恢复为新的优化快照。
- 恢复启用优化时创建的快照将在新实例中启用 Optimized Writes。
如果您扩展到不支持 Optimized Writes 的实例类型,Amazon RDS 将在该实例上启用 MySQL 的双写模式,以用作回退选项。如果您从不支持 Optimized Writes 的实例横向缩减到支持 Optimized Writes 的实例,Amazon RDS 将在双写模式下启动 MySQL,等待完成恢复和日志重放操作,然后在禁用双写的情况下重新启动 MySQL。
Optimized Writes 现已在美国东部(俄亥俄、弗吉尼亚北部)、美国西部(俄勒冈州)、亚太地区(新加坡、东京)和欧洲(法兰克福、爱尔兰、巴黎)区域推出,您可以立即开始使用 Optimized Writes 并从中受益!
— Jeff;