甘南州屿庙神教35号
办公时间:上午9:00-下午6:00

项目展示

首页 / Our Projects /提升数据库性能,使用 Amazon RDS 专用日志卷 数据库博客

提升数据库性能,使用 Amazon RDS 专用日志卷 数据库博客

2026-01-27 14:18:27

提升数据库性能:使用 Amazon RDS 专用日志卷

作者:Jeff Tillery 和 Wanda He,2024年7月23日,发布于 Amazon Elastic Block Store (Amazon EBS) 等相关领域。

关键要点

Amazon RDS 推出了一项新功能:专用日志卷 (DLV),旨在提升数据库事务性能。DLV 通过将数据库事务日志与数据表分开存储,消除了查询和事务处理之间的竞争,从而提高了性能。适用于需要高 IOPS 和低延迟的工作负载,特别是数据库存储超过 5 TiB 的情况。DLV 可以在所有商业 AWS 区域和 AWS GovCloud (US) 使用。

对于那些希望保持一致的数据库交易性能的用户,Amazon 关系数据库服务Amazon RDS引入了一项新功能:专用日志卷DLV。这一功能是一个额外的存储卷,专门用于数据库事务日志。DLV 与包含数据库表的卷是分开的,这使得事务写入日志的效率和一致性更高。对于分配了大量存储、有高 IOPS 要求或对延迟敏感的工作负载,DLV 是理想选择。日志的独立存储避免了查询与事务处理之间的争用,从而减少了提交延迟,并提高了数据库事务的性能一致性。

目前,DLV 已在所有商业 AWS 区域和 AWS GovCloud (US) 中提供支持,适用于以下数据库版本: Amazon RDS for PostgreSQL:版本 1310 及以上、147 及以上、152 及以上和 16 及以上 Amazon RDS for MySQL:版本 8028 及以上 Amazon RDS for MariaDB:版本 1067 及以上

在本文中,我们将探讨 DLV 的常见性能优势、使用场景、监控能力和部署成本。

性能分析

数据库数据文件和事务日志的 I/O 访问模式差异显著,同时底层存储配置会影响性能。关系数据库的数据文件访问通常是随机的,通过底层存储卷利用大量存储设备并行处理 I/O 请求可以提高性能。而数据库的事务日志则是顺序访问的,并没有获得同样的收益。

将事务日志文件放在专用卷上,使数据库能够同时进行数据和事务 I/O,避免了数据和日志 I/O 之间的争用。在我们的测试中,DLV 在平均延迟和每分钟事务数TPM上表现出更好的性能,尤其是在多可用区MultiAZ部署中。对于 MultiAZ 的实例部署,写操作需要先写入主实例的日志卷,然后才可以确认给客户端,DLV 为此设置了自己的 Linux 磁盘队列和复制通道,从而减少了 Linux 逻辑卷级别的排队,降低了磁盘延迟。

在我们的研究中,我们使用了 HammerDB 基准测试工具来生成针对 RDS for PostgreSQL MultiAZ 实例部署的在线事务处理,测试时有 DLV 和无 DLV 的对比。随着虚拟用户数量的增加,启用 DLV 的部署支持的每分钟事务数TPM比未启用 DLV 的部署多出 45。

测试环境

为了测量 DLV 在不断提高的工作负载下的影响,数据库分配了足够的资源。数据库参数配置为允许使用大量虚拟用户进行测试,同时避免过量的检查点活动。

参数值数据库RDS for PostgreSQL v161数据库大小约 2 TiB20000 个仓库数据库实例类r6gd16xlargevCPU 64,内存 512 GBEBS io2 卷6 TiB / 80K PIOPS

使用的自定义 RDS for PostgreSQL 配置参数: checkpointtimeout 300 maxconnections 10000 maxwalsize 102400 rdsforcessl 0

DLV 提供了数据库事务日志和数据文件的物理分离,这减少了事务与数据路径之间的 I/O 竞争,提高了性能,增强了 MultiAZ 写操作的效率,并更好地利用了底层存储和网络的吞吐量。此外,这种分离还使 RDS 在应对数据文件的 I/O 延迟时更具容错能力,从而提升了可用性,减少了高成本恢复操作的频率。

DLV 使用场景

DLV 特别适用于对一致性低延迟交易响应至关重要的数据库工作负载。这些工作负载包括高性能计算,如欺诈检测、支付处理和订票引擎。对于存储在磁盘上有大容量超过 5 TiB并且数据分布在大量存储设备上的数据库,建议使用 DLV。DLV 保护事务提交路径不受 I/O 竞争、存储事件和主数据卷上的延迟峰值影响。

以下是 DLV 适用的数据库特征: 大额分配存储超过 5 TiB 高 IOPS 要求 以事务为核心的工作负载 对延迟敏感的工作负载 使用 io1 或 io2 的预配置 IOPS 存储

如何在 RDS 实例上启用 DLV

启用 DLV 会创建一个全新的 1 TiB、3000 IOPS 固定大小的存储卷,用于存放数据库事务日志。当在 RDS for PostgreSQL 上启用 DLV 时,该卷成为 WriteAhead LoggingWAL文件的专用存储;在 RDS for MySQL 或 RDS for MariaDB 上启用 DLV 时,DLV 则作为二进制日志BINLOG和重做日志文件的专用存储。

您可以使用 AWS 管理控制台、AWS 命令行界面AWS CLI和 Amazon RDS API 启用或禁用 DLV。

使用控制台的步骤如下:1 在 Amazon RDS 控制台,导航至您的数据库实例。2 修改实例,在存储部分: 勾选开启专用日志卷以启用 DLV,或 取消勾选开启专用日志卷以禁用 DLV3 完成剩余步骤以应用更改。

另外,您还可以通过 AWS CLI 启用或禁用现有的 RDS 实例上的 DLV。

调用命令 createdbinstance 或 modifydbinstance 的参数:

bashdedicatedlogvolume nodedicatedlogvolume

例如,创建一个启用 DLV 的新 RDS for PostgreSQL 数据库:bashaws rds createdbinstance dbinstanceidentifier rdspgdlvtest region uswest2 masterusername dbmaster masteruserpassword engine postgres dbinstanceclass dbr6gd16xlarge storagetype io2 iops 80000 allocatedstorage 6000 dedicatedlogvolume

例如,禁用现有 RDS for PostgreSQL 数据库的 DLV:bashaws rds modifydbinstance dbinstanceidentifier rdspgdlvtest nodedicatedlogvolume applyimmediately

使用 DLV 时的注意事项

在使用 DLV 时,有几个关键考虑因素和最佳实践值得关注。

DLV 与 RDS MultiAZ 和只读副本实例的集成

DLV 支持 RDS 单实例部署、MultiAZ 和只读副本实例。当前不支持 MultiAZ 数据库集群部署。

飞兔ft加速器

提升数据库性能,使用 Amazon RDS 专用日志卷 数据库博客

当修改或创建启用 DLV 的 RDS MultiAZ 实例时,将会为主实例和备用实例创建 DLV。

对于带有只读副本的数据库,如果主数据库实例启用了 DLV,所有随后创建的只读副本也将启用 DLV。任何在主实例上启用 DLV 之前创建的只读副本将不会启用,除非显式修改。我们建议主数据库和所有只读副本保持一致的 DLV 启用/禁用设置。

启用 DLV 时最小化停机时间

启用 DLV 时,需要创建一个新的存储卷,并将数据库事务日志从数据卷移动到 DLV。启用 DLV 需要数据库停机,但可以通过在新的或现有的只读副本上启用 DLV,然后将其提升为主数据库,以减少停机时间。然后可以将应用程序的数据库端点指向启用 DLV 的新数据库。通过 RDS 蓝绿部署 还可以简化这一过程,进一步减少停机时间。可以在绿色实例上启用 DLV,一旦绿色实例完全同步,就进行切换,从而最小化停机时间。

DLV 使用监控

在启用后,DLV 是数据库的关键组成部分,建议进行主动监控。Amazon CloudWatch 提供了全面的指标列表,可以可视化数据库事务日志和底层存储卷的利用率与性能。当启用 DLV 时,还会提供额外的监控指标。有关更多细节,请参见 Amazon CloudWatch 的 RDS 指标。

以下表格列出了数据库事务日志和 DLV 的指标。

CloudWatch 指标描述FreeStorageSpaceLogVolume日志卷上可用存储空间的大小。TransactionLogsDiskUsage事务日志使用的磁盘空间。TransactionLogsGeneration每秒生成的事务日志大小。BinLogDiskUsage二进制日志占用的磁盘空间。如果 MySQL 和 MariaDB 实例包括只读副本启用了自动备份,则会生成二进制日志。DiskQueueDepthLogVolume等待访问日志卷磁盘的等待 I/O读/写请求数量。OldestReplicationSlotLag在 WAL 数据接收方面滞后最多的副本的滞后大小。ReadIOPSLogVolume日志卷的每秒平均磁盘读 I/O 操作次数。ReadLatencyLogVolume日志卷每次磁盘 I/O 操作的平均耗时。ReadThroughputLogVolume日志卷每秒从磁盘读取的平均字节数。WriteIOPSLogVolume日志卷的每秒平均磁盘写 I/O 操作次数。WriteLatencyLogVolume日志卷每次磁盘 I/O 操作的平均耗时。WriteThroughputLogVolume日志卷每秒写入磁盘的平均字节数。

指标在启用 DLV 时可用

Amazon 增强监控 (EM) 生成操作系统指标,为 DLV 存储 I/O 性能提供洞察。

DLV 的成本

DLV 存储需要额外的费用。定价基于数据库存储类型,io1 或 io2,和预配置 IOPS 数据卷的配置一致,设定为 1000 GiB 和 3000 IOPS。DLV 仅支持在预配置 IOPS 存储上。您可以使用 AWS 价格计算器 获取 RDS 数据库和 DLV 的费用估算,选择数据库存储部分中的 Dedicated Log Volume=yes。

例如,在美国东部北弗吉尼亚,与 Amazon RDS for PostgreSQL 中的单可用区实例连接的 io2 DLV 将花费 0125 x 1000 GiB 加上 010 x 3000 IOPS,也就是每月 425。如果您在同一地区运行一个附加有一个备用的 MultiAZ 实例的 io2 DLV,它的费用将为 025 x 1000 GiB 加上 020 x 3000 IOPS,费用为每月 850。

要了解更多关于数据卷定价的信息,请参考 预配置 IOPS SSD 存储成本。

结论

在本文中,我们探讨了 Amazon RDS 专用日志卷DLV功能的相关信息,包括其使用场景、性能优势、部署考虑和成本。Amazon RDS DLV 提高了 Amazon RDS for PostgreSQL、MySQL 和 MariaDB 工作负载的性能一致性。它帮助隔离数据事务提交路径,减少了存储事件对延迟的影响,提高了一致性性能并减少提交延迟。对于定义了服务级别协议SLA或数据在磁盘上占据大空间超过 5 TiB的高性能计算工作负载,推荐使用 DLV。

如果您有任何问题,请在评论区留言。

关于作者

Jeff Tillery 是亚马逊网络服务公司的高级数据库专家解决方案架构师。他为客户提供指导,帮助他们识别和采用最佳的技术和云迁移策略,以与商业目标相一致。

Wanda He 是亚马逊网络服务公司的首席数据库专家解决方案架构师。她与客户协作,设计、部署和优化 AWS 上的关系数据库。