使用适用于 MySQL 的 Amazon RDS 优化型写入功能提高写入性能 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用适用于 MySQL 的 Amazon RDS 优化型写入功能提高写入性能

您可以使用适用于 MySQL 的 Amazon RDS 优化型写入功能来提高写入事务的性能。当您的 RDS for MySQL 数据库使用 RDS 优化写入时,它最多可以实现高两倍的写入事务吞吐量。

RDS 优化写入概述

当您启用 Amazon RDS 优化写入时,您的 RDS for MySQL 数据库在将数据刷新到持久存储时仅写入一次,无需双写缓冲区。数据库继续为可靠的数据库事务提供 ACID 属性保护,同时提高性能。

关系数据库(如 MySQL)为可靠的数据库事务提供原子性、一致性、隔离性和持久性的 ACID 属性。为了帮助提供这些属性,MySQL 使用一个名为双写缓冲区的数据存储区域,以防止出现不完整页面写入错误。这些错误发生在数据库更新页面时出现硬件故障的情况下,例如停电时。MySQL 数据库可以检测不完整页面写入,并使用双写缓冲区中的页面副本进行恢复。虽然这种技术提供了保护,但也会导致额外的写入操作。有关 MySQL 双写缓冲区的更多信息,请参阅 MySQL 文档中的双写缓冲区

开启 RDS 优化写入后,RDS for MySQL 数据库将在数据刷新到持久存储时仅写入一次,而不使用双写缓冲区。如果您在 RDS for MySQL 数据库上运行写入密集型工作负载,RDS 优化写入非常有用。具有写入密集型工作负载的数据库示例包括支持数字支付、金融交易和游戏应用程序的数据库。

这些数据库在使用 Amazon Nitro 系统的数据库实例类上运行。由于这些系统中的硬件配置,数据库可以在一个步骤中可靠而持久地将 16KiB 页直接写入数据文件。Amazon Nitro 系统使 RDS 优化写入成为可能。

您可以设置新的数据库参数 rds.optimized_writes 来控制适用于 RDS for MySQL 数据库的 RDS 优化写入功能。在 RDS for MySQL 版本 8.0 的数据库参数组中访问此参数。使用以下值设置参数:

  • AUTO – 如果数据库支持 RDS 优化写入,则开启此功能。如果数据库不支持 RDS 优化写入,请将其关闭。此设置是原定设置。

  • OFF – 关闭 RDS 优化写入,即使数据库支持此功能也不例外。

如果您将配置为使用 RDS 优化写入的 RDS for MySQL 数据库迁移到不支持该功能的数据库实例类,RDS 会自动对该数据库关闭 RDS 优化写入。

关闭 RDS 优化写入时,数据库使用 MySQL 双写缓冲区。

要确定 RDS for MySQL 数据库是否使用 RDS 优化写入,请查看数据库的 innodb_doublewrite 参数的当前值。如果数据库使用 RDS 优化写入,则此参数设置为 FALSE0)。

使用 RDS 优化写入

使用 RDS 控制台、Amazon CLI 或 RDS API 创建 RDS for MySQL 数据库时,可以开启 RDS 优化写入。在数据库创建过程中,当以下两个条件都适用时,RDS 优化写入功能会自动开启:

  • 您可以指定支持 RDS 优化写入的数据库引擎版本和数据库实例类。

    • RDS for MySQL 版本 8.0.30 及更高版本支持 RDS 优化写入。有关 RDS for MySQL 版本的信息,请参阅 Amazon RDS 上的 MySQL 版本

    • 使用以下数据库实例类的 RDS for MySQL 数据库支持 RDS 优化写入:

      • db.m7g

      • db.m6gd

      • db.m5d

      • db.r7g

      • db.r6g

      • db.r6gd

      • db.r6i

      • db.r5b

      • db.r5d

      • db.x2iedn

      有关数据库实例类的信息,请参阅 数据库实例类

      数据库实例类可用性因 Amazon Web Services 区域而异。要确定特定 Amazon Web Services 区域中是否支持数据库实例类,请参阅确定 Amazon Web Services 区域 中的数据库实例类支持

  • 在与数据库关联的参数组中,rds.optimized_writes 参数设置为 AUTO。在原定设置参数组中,此参数始终设置为 AUTO

如果您需要使用支持 RDS 优化型写入功能的数据库引擎版本和数据库实例类,但您不想使用此功能,则在创建数据库时指定一个自定义参数组。在此参数组中,将 rds.optimized_writes 参数设置为 OFF。如果您希望数据库稍后使用 RDS 优化写入,可以将此参数设置为 AUTO 以将其开启。有关创建自定义参数组和设置参数的信息,请参阅 使用参数组

有关创建数据库实例的信息,请参阅创建 Amazon RDS 数据库实例

当您使用 RDS 控制台创建 RDS for MySQL 数据库时,您可以筛选支持 RDS 优化写入的数据库引擎版本和数据库实例类。开启筛选条件后,您可以从可用的数据库引擎版本和数据库实例类中进行选择。

要选择支持 RDS 优化写入的数据库引擎版本,请在 Engine version(引擎版本)中筛选支持该功能的 RDS for MySQL 数据库引擎版本,然后选择版本。


                        适用于 RDS 优化型写入功能的数据库引擎版本筛选条件

Instance configuration(实例配置)部分中,筛选支持 RDS 优化写入的数据库实例类,然后选择数据库实例类。


                        适用于 RDS 优化型写入功能的数据库实例类筛选条件

做出这些选择后,您可以选择符合要求的其他设置,并使用控制台完成创建 RDS for MySQL 数据库。

要使用 Amazon CLI 创建数据库实例,请使用 create-db-instance 命令。确保 --engine-version--db-instance-class 值支持 RDS 优化写入。此外,确保与数据库实例关联的参数组将 rds.optimized_writes 参数设置为 AUTO。以下示例将原定设置参数组与数据库实例关联。

例 创建使用 RDS 优化写入的数据库实例

对于 Linux、macOS 或 Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --engine mysql \ --engine-version 8.0.30 \ --db-instance-class db.r5b.large \ --manage-master-user-password \ --master-username admin \ --allocated-storage 200

对于 Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --engine mysql ^ --engine-version 8.0.30 ^ --db-instance-class db.r5b.large ^ --manage-master-user-password ^ --master-username admin ^ --allocated-storage 200

您可以使用 CreateDBInstance 操作创建数据库实例。使用此操作时,请确保 EngineVersionDBInstanceClass 值支持 RDS 优化写入。此外,确保与数据库实例关联的参数组将 rds.optimized_writes 参数设置为 AUTO

RDS 优化写入的限制

以下限制适用于 RDS 优化写入:

  • 仅在数据库是使用支持 RDS 优化写入的数据库引擎版本和数据库实例类创建的情况下,才能修改数据库以开启此功能。在这种情况下,如果对数据库关闭了 RDS 优化写入,则可以通过将 rds.optimized_writes 参数设置为 AUTO 以将其打开。有关更多信息,请参阅使用 RDS 优化写入

  • 如果数据库是在 RDS 优化型写入功能发布之后创建的,则只能修改数据库以开启此功能。RDS 优化型写入功能所需的底层文件系统格式和组织与该功能发布之前创建的数据库的文件系统格式不兼容。推而广之,您不能将以前创建的实例的任何快照与此功能一起使用,因为快照使用的是较旧的、不兼容的文件系统。

    重要

    要将旧格式转换为新格式,您需要执行完整的数据库迁移。如果您想在该功能发布之前创建的数据库实例上使用此功能,请创建一个新的空数据库实例,然后手动将较旧的数据库实例迁移到较新的数据库实例。您可以使用原生 mysqldump 工具、复制或 Amazon Database Migration Service 迁移较旧的数据库实例。有关更多信息,请参阅《MySQL 8.0 参考手册》中的 mysqldump — 数据库备份程序在 Amazon RDS 中使用 MySQL 复制Amazon Database Migration Service 用户指南。有关使用 Amazon 工具进行迁移的帮助,请联系支持人员。

  • 当您从快照中还原 RDS for MySQL 数据库时,仅当满足以下所有条件时,才能为数据库开启 RDS 优化写入:

    • 快照是从支持 RDS 优化写入的数据库创建的。

    • 快照是从发布 RDS 优化型写入功能之后创建的数据库中创建的。

    • 快照还原为支持 RDS 优化写入的数据库。

    • 还原的数据库与一个参数组相关联,该参数组的 rds.optimized_writes 参数设置为 AUTO