使用适用于 MySQL 的 RDS 优化型写入功能提高写入性能
您可以使用适用于 MySQL 的 RDS 优化写入功能来提高写入事务的性能。当您的 RDS for MySQL 数据库使用 RDS 优化写入时,它最多可以实现高两倍的写入事务吞吐量。
RDS 优化写入概述
当您启用 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 优化写入。
如果您将配置为使用 RDS 优化写入的 RDS for MySQL 数据库迁移到不支持该特征的数据库实例类,RDS 会自动对该数据库关闭 RDS 优化写入。
关闭 RDS 优化写入时,数据库使用 MySQL 双写缓冲区。
要确定 RDS for MySQL 数据库是否使用 RDS 优化写入,请查看数据库的 innodb_doublewrite
参数的当前值。如果数据库使用 RDS 优化写入,则此参数设置为 FALSE
(0
)。
使用 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.m6g
-
db.m6gd
-
db.m6i
-
db.m5
-
db.m5d
-
db.r7g
-
db.r6g
-
db.r6gd
-
db.r6i
-
db.r5
-
db.r5b
-
db.r5d
-
db.x2idn
-
db.x2iedn
有关数据库实例类的信息,请参阅 数据库实例类。
数据库实例类可用性因 Amazon Web Services 区域而异。要确定特定 Amazon Web Services 区域中是否支持数据库实例类,请参阅确定 Amazon Web Services 区域 中的数据库实例类支持。
要将数据库升级为支持 RDS 优化写入的数据库实例类,您可以创建蓝绿部署。有关更多信息,请参阅 在现有数据库上启用 RDS 优化写入。
-
-
-
在与数据库关联的参数组中,
rds.optimized_writes
参数设置为AUTO
。在默认参数组中,此参数始终设置为AUTO
。
如果您需要使用支持 RDS 优化型写入特征的数据库引擎版本和数据库实例类,但您不想使用此特征,则在创建数据库时指定一个自定义参数组。在此参数组中,将 rds.optimized_writes
参数设置为 OFF
。如果您希望数据库稍后使用 RDS 优化写入,可以将此参数设置为 AUTO
以将其开启。有关创建自定义参数组和设置参数的信息,请参阅 Amazon RDS 的参数组。
有关创建数据库实例的信息,请参阅创建 Amazon RDS 数据库实例。
当您使用 RDS 控制台创建 RDS for MySQL 数据库时,您可以筛选支持 RDS 优化写入的数据库引擎版本和数据库实例类。开启筛选条件后,您可以从可用的数据库引擎版本和数据库实例类中进行选择。
要选择支持 RDS 优化写入的数据库引擎版本,请在 Engine version(引擎版本)中筛选支持该功能的 RDS for MySQL 数据库引擎版本,然后选择版本。
在 Instance configuration(实例配置)部分中,筛选支持 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-version8.0.30
\ --db-instance-classdb.r5b.large
\ --manage-master-user-password \ --master-usernameadmin
\ --allocated-storage200
对于 Windows:
aws rds create-db-instance ^ --db-instance-identifier
mydbinstance
^ --engine mysql ^ --engine-version8.0.30
^ --db-instance-classdb.r5b.large
^ --manage-master-user-password ^ --master-usernameadmin
^ --allocated-storage200
您可以使用 CreateDBInstance 操作创建数据库实例。使用此操作时,请确保 EngineVersion
和 DBInstanceClass
值支持 RDS 优化写入。此外,确保与数据库实例关联的参数组将 rds.optimized_writes
参数设置为 AUTO
。
在现有数据库上启用 RDS 优化写入
要修改现有 RDS for MySQL 数据库以开启 RDS 优化写入功能,数据库必须使用支持的数据库引擎版本和数据库实例类创建。此外,数据库必须是在 2022 年 11 月 27 日发布 RDS 优化写入之后创建的,因为所需的底层文件系统配置与此次发布前创建的数据库的配置不兼容。如果满足上述条件,则可以通过将 rds.optimized_writes
参数设置为 AUTO
来开启 RDS 优化写入。
如果您的数据库不是使用支持的引擎版本、实例类或文件系统配置创建的,则可以使用 RDS 蓝绿部署来迁移到支持的配置。创建蓝绿部署时,请执行以下操作:
-
选择在绿色数据库上启用优化写入,然后指定支持 RDS 优化写入的引擎版本和数据库实例类。有关支持的引擎版本和实例类的列表,请参阅使用 RDS 优化写入。
-
在存储下,选择升级存储文件系统配置。此选项将数据库升级到兼容的底层文件系统配置。
创建蓝绿部署时,如果将 rds.optimized_writes
参数设置为 AUTO
,则在绿色环境中将自动启用 RDS 优化写入。然后,您可以切换蓝绿部署,以将绿色环境升级为新的生产环境。
有关更多信息,请参阅 创建蓝绿部署。
RDS 优化写入的限制
当您从快照中还原 RDS for MySQL 数据库时,仅当满足以下所有条件时,才能为数据库开启 RDS 优化写入:
-
快照是从支持 RDS 优化写入的数据库创建的。
-
快照是从发布 RDS 优化型写入功能之后创建的数据库中创建的。
-
快照还原为支持 RDS 优化写入的数据库。
-
还原的数据库与一个参数组相关联,该参数组的
rds.optimized_writes
参数设置为AUTO
。