Amazon RDS 数据库实例存储 - Amazon Relational Database Service

Amazon RDS 数据库实例存储

Amazon RDS for Db2、MariaDB、MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server 的数据库实例使用 Amazon Elastic Block Store(Amazon EBS)卷进行数据库和日志存储。

在某些情况下,您的数据库工作负载可能无法 100% 实现您预调配的 IOPS。有关更多信息,请参阅 影响数据库性能的因素

有关实例存储定价的更多信息,请参阅 Amazon RDS 定价

Amazon RDS 存储类型

Amazon RDS 提供三种存储类型:预调配 IOPS SSD(也称为 io1 和 io2 Block Express)、通用型 SSD(也称为 gp2 和 gp3)和磁性存储(也称为标准存储)。它们的性能特性和价格不同,这意味着您可以根据数据库工作负载需求定制存储性能和成本。您可以创建具有多达 64 TiB 存储的 Db2、MySQL、MariaDB、Oracle、SQL Server 和 PostgreSQL RDS 数据库实例。RDS for Db2 不支持 gp2 和磁性存储类型。

下面的列表简要介绍这三个存储类型:

  • 预调配 IOPS SSD – 预调配 IOPS 存储符合输入/输出密集型工作负载(尤其是数据库工作负载)的需求,此类工作负载需要低输入/输出延迟和一致的输入/输出吞吐量。预调配 IOPS 存储最适合生产环境。

    有关预调配 IOPS 存储的更多信息(包括存储大小范围),请参阅预置 IOPS SSD 存储

  • 通用型 SSD – 通用型 SSD 卷提供了经济高效的存储,适用于在中等规模的数据库实例上运行的各种工作负载。通用型存储最适合开发和测试环境。

    有关通用型 SSD 存储的更多信息(包括存储大小范围),请参阅通用型 SSD 存储

  • 磁性 – Amazon RDS 还支持磁性存储以实现向后兼容。建议您采用通用型 SSD 或预调配 IOPS SSD 来满足所有新存储需求。磁性存储上的数据库实例允许的最大存储量为 3 TiB。有关更多信息,请参阅 磁性存储(旧版,不推荐)

当您选择通用型 SSD 或预调配 IOPS SSD 时,根据所选引擎和所请求的存储空间量,Amazon RDS 会自动跨多个卷进行条带化以提高性能,如下表所示。

数据库引擎 Amazon RDS 存储大小 预调配的卷数
Db2 小于 400GiB 1
Db2 400–65536GiB 4
MariaDB、MySQL 和 PostgreSQL 小于 400GiB 1
MariaDB、MySQL 和 PostgreSQL 400–65536GiB 4
Oracle 小于 200GiB 1
Oracle 200–65536GiB 4
SQL Server 任何 1

当您修改通用型 SSD 或预调配 IOPS SSD 卷时,它会经历一系列状态。当卷处于 optimizing 状态时,卷性能介于源配置规范和目标配置规范之间。过渡卷的性能将不低于这两种规格中的最低者。

重要

当您修改实例的存储以使其从一个卷变为四个卷时,或者当您使用磁性存储修改实例时,Amazon RDS 不使用“弹性卷”功能。相反,Amazon RDS 会预调配新卷,并将数据从旧卷透明地移到新卷。此操作会同时消耗新旧卷的大量 IOPS 和吞吐量。根据卷的大小和修改期间存在的数据库工作负载量,此操作可能会消耗大量 IOPS,显著增加 I/O 延迟,需要几个小时才能完成,而 RDS 实例保持为 Modifying 状态。

预置 IOPS SSD 存储

对于需要快速且一致的 I/O 性能的生产应用程序,我们建议使用预调配 IOPS 存储。预调配 IOPS 存储是一种存储类型,它提供了可预测的性能以及一致的低延迟。预调配 IOPS 存储针对要求性能一致的联机事务处理(OLTP)工作负载进行了优化。预调配 IOPS 可帮助这些工作负载的性能优化。

在创建数据库实例时,您可以指定 IOPS 速率和卷的大小。Amazon RDS 为数据库实例提供该 IOPS 速率,直到您对其进行更改。

Amazon RDS 提供了两种类型的预调配 IOPS SSD 存储:io2 Block Express 存储(推荐)io1 存储(上一代)

io2 Block Express 存储(推荐)

对于 I/O 密集型和延迟敏感型工作负载,您可以使用预调配 IOPS SSD io2 Block Express 存储,以实现高达每秒 256,000 次 I/O 操作(IOPS)。io2 Block Express 卷的吞吐量因每个卷的预调配 IOPS 量和正在运行的 I/O 操作的规模而异。

所有基于 AWS Nitro 系统的 RDS io2 卷都是 io2 Block Express 卷,平均延迟为亚毫秒。不基于 AWS Nitro 系统的数据库实例是 io2 卷。

下表显示了每个数据库引擎的预调配 IOPS 范围和最大吞吐量以及存储大小范围。

数据库引擎 存储大小的范围 预调配 IOPS 的范围 最大吞吐量
Db2、MariaDB、MySQL 和 PostgreSQL 100–65536GiB 1000–256000 IOPS 16000 MiB/s
Oracle 100–199GiB 1000–199000 IOPS 16000 MiB/s
Oracle 200–65536GiB 1000–256000 IOPS 16000 MiB/s
SQL Server 20 – 65536 GiB 1000–256000 IOPS 16000 MiB/s

IOPS 和存储大小范围具有以下约束:

  • IOPS 与已分配存储(以 GiB 为单位)的比率必须不超过 1000:1。对于不基于 AWS Nitro 系统的数据库实例,该比率为 500:1。

  • 可以为 256GiB 和更大的卷预置最多 IOPS(1000IOPS x 256GiB = 256000IOPS)。对于不基于 AWS Nitro 系统的数据库实例,最大 IOPS 可达到 512GiB(500IOPS x 512GiB = 256000 IOPS)。

  • 吞吐量按比例扩展至每个预置 IOPS 0.256 Mib/s。在 256000 IOPS 下,当 I/O 大小为 16KiB 时,最大吞吐量可以达到 4000MiB/s;在 I/O 大小为 256KiB 时,可以实现 16000 IOPS 或更高的吞吐量。对于不基于 AWS Nitro 系统的数据库实例,在 128000 IOPS 下,当 I/O 大小为 16KiB 时,最大吞吐量可达到 2000MiB/s。

  • 如果您使用存储自动扩展,IOPS 和最大存储阈值(以 GiB 为单位)之间的比率也同样适用。有关存储自动扩展的更多信息,请参阅 使用 Amazon RDS 存储自动扩展功能自动管理容量

Amazon RDS io2 Block Express 卷可用于以下 AWS 区域中:

  • 亚太地区(香港)

  • 亚太地区(孟买)

  • 亚太地区(首尔)

  • 亚太地区(新加坡)

  • 亚太地区(悉尼)

  • 亚太地区(东京)

  • 加拿大(中部)

  • 欧洲地区(法兰克福)

  • 欧洲地区(爱尔兰)

  • Europe (London)

  • 欧洲(斯德哥尔摩)

  • 中东(巴林)

  • 美国东部(俄亥俄)

  • 美国东部(弗吉尼亚州北部)

  • 美国西部(加利福尼亚北部)

  • 美国西部(俄勒冈州)

io1 存储(上一代)

对于 I/O 密集型工作负载,您可以使用预调配 IOPS SSD io1 存储,并实现每秒高达 256,000 次的 I/O 操作(IOPS)。io1 卷的吞吐量因每个卷的预调配 IOPS 量和正在执行的 I/O 操作的规模而异。建议在可用的情况下使用 io2 Block Express 存储。

下表显示了每个数据库引擎的预调配 IOPS 范围和最大吞吐量以及存储大小范围。

数据库引擎 存储大小的范围 预调配 IOPS 的范围 最大吞吐量
Db2、MariaDB、MySQL 和 PostgreSQL 100–399GiB 1000 – 19950 IOPS 500 MiB/s
Db2、MariaDB、MySQL 和 PostgreSQL 400–65536GiB 1000–256000 IOPS 4,000 MiB/s
Oracle 100–199GiB 1000 – 9950 IOPS 500 MiB/s
Oracle 200–65536GiB 1000–256000 IOPS¹ 4,000 MiB/s
SQL Server 20–16384GiB 1000–64000 IOPS² 1,000 MiB/s
注意

¹ 对于 Oracle,您只能在 r5b 实例类型上预调配最高 256000 IOPS 的性能。

² 对于 SQL Server,仅可在基于 Nitro 的实例(m5*、m6i、r5*、r6i 和 z1d 实例类型)上确保最高 64000 IOPS 的性能。其他实例类型可确保最高 32000 IOPS 的性能。

IOPS 和存储大小范围具有以下约束:

  • 在 RDS for SQL Server 上,IOPS 与已分配存储(以 GiB 为单位)的比率必须为 1–50,而在其他 RDS 数据库引擎上必须为 0.5–50。

  • 如果您使用存储自动扩展,IOPS 和最大存储阈值(以 GiB 为单位)之间的比率也同样适用。

    有关存储自动扩展的更多信息,请参阅 使用 Amazon RDS 存储自动扩展功能自动管理容量

将预置 IOPS 存储与多可用区部署或只读副本组合

对于生产 OLTP 使用案例,建议您使用多可用区部署提高容错能力和预调配 IOPS 存储,以便实现快速可预测性能。

您还可以将预调配 IOPS 存储与 MySQL、MariaDB 或 PostgreSQL 的只读副本一起使用。只读副本的存储类型与主数据库实例上的存储类型无关。例如,您可能需要对具有使用预调配 IOPS SSD 存储的主数据库实例的只读副本使用通用型 SSD 来降低成本。不过,在这种情况下,与主数据库实例和只读副本均使用预调配 IOPS 存储的配置相比,只读副本的性能可能会不同。

预置 IOPS 存储成本

通过预调配 IOPS 存储,您需要为预配置的资源付费,因此在规定月份中无论是否使用这些资源,您都需为此支付费用。

有关定价的更多信息,请参阅 Amazon RDS 定价

利用 Amazon RDS 预调配 IOPS 存储获得最佳性能

如果您的工作负载受 I/O 限制,则使用预调配 IOPS 存储可以增加系统能够并发处理的 I/O 请求数。并发度提高可降低延迟,因为 I/O 请求在队列中占用的时间变少。降低延迟可加快数据库提交,从而缩短响应时间并提高数据库吞吐量。

预调配 IOPS 存储提供了一种通过指定 IOPS 来预留 I/O 容量的方法。不过,与任何其他的系统容量属性一样,负载下的最大吞吐量会受到系统首先消耗的资源的限制。该资源可能是网络带宽、CPU、内存或数据库内部资源。

通用型 SSD 存储

通用存储提供了经济高效的存储性能,可用于大多数对延迟或性能不敏感的数据库工作负载。

注意

与使用预调配 IOPS 存储的实例相比,使用通用型存储的数据库实例会经历更久的延迟。如果您需要数据库实例在执行这些操作之后保持最低延迟,建议您使用预置 IOPS SSD 存储

Amazon RDS 提供两种类型的通用型存储:gp3 存储(推荐)gp2 存储(上一代)

gp3 存储(推荐)

通过使用通用型 gp3 存储卷,您可以独立于存储容量自定义存储性能。存储性能是每秒输入/输出操作数(IOPS)与存储卷可执行读取和写入的速度(存储吞吐量)的组合。在 gp3 存储卷上,Amazon RDS 提供的基准存储性能为 3000 IOPS 和 125MiB/s。

对于除 RDS For SQL Server 之外的每个 RDS 数据库引擎,当 gp3 卷的存储大小达到某个阈值时,基准存储性能将得到提高。这是因为卷条带化,其中存储使用四个卷而不是一个卷。RDS for SQL Server 不支持卷条带化,因此没有阈值。对于带区卷,Amazon RDS 提供的基准存储性能为 12,000 IOPS 和 500 MiB/s。

下表显示了 Amazon RDS 数据库引擎上 gp3 卷的存储性能,包括阈值。

数据库引擎 存储大小 基准存储性能 预调配 IOPS 的范围 预调配存储吞吐量的范围
Db2、MariaDB、MySQL 和 PostgreSQL 20–399 GiB 3000 IOPS/125MiB/s 不适用 不适用
Db2、MariaDB、MySQL 和 PostgreSQL 400–65536GiB 12000 IOPS/500MiB/s 12,000–64,000IOPS 500 – 4000MiB/s
Oracle 20–199GiB 3000 IOPS/125MiB/s 不适用 不适用
Oracle 200–65536GiB 12000 IOPS/500MiB/s 12,000–64,000IOPS 500 – 4000MiB/s
SQL Server 20–16384GiB 3000 IOPS/125MiB/s 3,000–16,000IOPS 125 – 1000MiB/s

对于除 RDS for SQL Server 之外的每个数据库引擎,当存储大小等于或高于阈值时,您可以预调配额外的 IOPS 和存储吞吐量。对于 RDS for SQL Server,您可以为任何可用存储大小预调配额外的 IOPS 和存储吞吐量。对于所有数据库引擎,您只需为额外的预调配存储性能付费。有关更多信息,请参阅 Amazon RDS 定价

尽管增加的预调配 IOPS 和存储吞吐量不依赖于存储大小,但它们是相互关联的。当您将 MariaDB 和 MySQL 的 IOPS 提高到 32,000 以上时,存储吞吐量值会自动从 500MiBps 增加。例如,当您在 RDS for MySQL 上将 IOPS 设置为 40,000 时,存储吞吐量必须至少为 625MiBps。Db2、Oracle、PostgreSQL 和 SQL Server 数据库实例不发生自动增加的情况。

对于多可用区数据库集群,Amazon RDS 会根据您预调配的 IOPS 自动设置吞吐量值。您不能修改吞吐量值。

RDS 上 gp3 卷的存储性能值具有以下限制:

  • 对于所有支持的数据库引擎,存储吞吐量与 IOPS 的最大比率为 0.25。

  • 在 RDS for SQL Server 上,IOPS 与已分配存储(以 GiB 为单位)的最小比率为 0.5。其他支持的数据库引擎没有最低比率。

  • 对于所有支持的数据库引擎,IOPS 与已分配存储的最大比率为 500。

  • 如果您使用存储自动扩展,IOPS 和最大存储阈值(以 GiB 为单位)之间的比率也同样适用。

    有关存储自动扩展的更多信息,请参阅 使用 Amazon RDS 存储自动扩展功能自动管理容量

gp2 存储(上一代)

当您的应用程序不需要高存储性能时,您可以使用通用型 SSD gp2 存储。gp2 存储的基准输入/输出性能为 3IOPS/GiB,最少具有 100IOPS。这种关系意味着较大的卷具有更好的性能。例如,一个 100GiB 卷的基准性能为 300 IOPS。一个 1000GiB 卷的基准性能为 3000 IOPS。

大小低于 1000GiB 的单独 gp2 卷也有能力在延长的时间内突增至 3000 IOPS。卷 I/O 积分余额决定突增性能。有关基准性能和输入/输出积分余额如何影响性能的更详细说明,请参阅 AWS 数据库博客上的博文 Understanding burst vs. baseline performance with Amazon RDS and gp2(了解 Amazon RDS 和 gp2 的突增与基线性能)。

许多工作负载从不会耗尽突增余额。不过,某些工作负载可能会用完 3000 IOPS 突增存储积分余额,因此,应计划存储容量以满足您的工作负载需求。

对于大于 4,000 GiB 的 gp2 卷,基准性能大于突增性能。对于这些卷,因为基准性能优于 3000 IOPS 突发性能,所以突发性能并不重要。但是,对于某些引擎和大小的数据库实例,存储跨四个卷进行条带化,可提供单个卷的四倍基准吞吐量和四倍突增 IOPS。

下表显示了 Amazon RDS 数据库引擎上各种存储大小的 gp2 卷的存储性能。

数据库引擎 RDS 存储大小 基准 IOPS 的范围 基准吞吐量的范围 突增 IOPS
MariaDB、MySQL 和 PostgreSQL 5–399GiB¹ 100 - 1197 IOPS 128 - 250MiB/s 3000
MariaDB、MySQL 和 PostgreSQL 400–1335GiB 1200 - 4005 IOPS 512 - 1000 MiB/s 12000
MariaDB、MySQL 和 PostgreSQL 1336–3999GiB 4008 - 11997 IOPS 1,000 MiB/s 12000
MariaDB、MySQL 和 PostgreSQL 4000–65536GiB 12000 - 64000 IOPS 1,000 MiB/s 不适用²
Oracle 20–199GiB 100 - 597 IOPS 128 - 250MiB/s 3000
Oracle 200–1335GiB 600 - 4005 IOPS 500 - 1000MiB/s 12000
Oracle 1336–3999GiB 4008 - 11997 IOPS 1,000 MiB/s 12000
Oracle 4000–65536GiB 12000 - 64000 IOPS 1,000 MiB/s 不适用²
SQL Server 20–333GiB 100 - 999IOPS 128 - 250MiB/s 3000
SQL Server 334–999GiB 1002 - 2997 IOPS 250 MiB/s 3000
SQL Server 1000–16384GiB 3000 - 16000 IOPS 250 MiB/s 不适用²
注意

¹ 使用 AWS Management Console,您可以在 db.t3.micro 和 db.t4g.micro 数据库实例类的免费套餐中,创建存储大小最小为 5GiB 的数据库实例。否则,最小存储大小为 20GiB。此限制不适用于 AWS CLI 和 RDS API。

² 卷的基准性能超过了最大突发性能。

比较固态驱动器(SSD)存储类型

下表显示了 Amazon RDS 使用的 SSD 存储卷的使用情况和性能特征。

特征 预调配 IOPS(io2 Block Express) 预调配 IOPS(io1) 通用型(gp3) 通用型(gp2)
描述

RDS 存储组合中性能最高(IOPS、吞吐量、延迟)

专为延迟敏感型、事务工作负载而设计

一致的存储性能(IOPS、吞吐量、延迟)

专为延迟敏感型、事务工作负载而设计

可灵活地独立预调配存储、IOPS 和吞吐量

平衡各种事务性工作负载的性价比

提供可突增的 IOPS

平衡各种事务性工作负载的性价比

使用案例

需要亚毫秒延迟和高达 256000 IOPS 的持续 IOPS 性能的业务关键型事务性工作负载

需要最多 256000IOPS 的持续 IOPS 性能的事务性工作负载

在开发/测试环境中,在中型关系数据库上运行的广泛工作负载

在开发/测试环境中,在中型关系数据库上运行的广泛工作负载

延迟

亚毫秒,在 99.9% 的时间内始终提供

一位数毫秒,在 99.9% 的时间内始终提供

一位数毫秒,在 99% 的时间内始终提供

一位数毫秒,在 99% 的时间内始终提供

卷大小

100–65536GiB

100–65536GiB(在 RDS for SQL Server 上为 20–16384GiB)

20–65536GiB(在 RDS for SQL Server 上为 16384GiB)

20–65536GiB(在 RDS for SQL Server 上为 16384GiB)

最大 IOPS

256,000

256,000(在 RDS for SQL Server 上为 64,000)

64,000(在 RDS for SQL Server 上为 16,000)

64,000(在 RDS for SQL Server 上为 16,000)

注意

您无法直接在 gp2 存储上预调配 IOPS。IOPS 因分配的存储大小而异。

最大吞吐量

根据预调配 IOPS 卷扩展至最多 4,000MB/s

吞吐量按比例扩展至每个预置 IOPS 0.256 Mib/s。在 256000 IOPS 下,当 I/O 大小为 16KiB 时,最大吞吐量可以达到 4000MiB/s;在 I/O 大小为 256KiB 时,可以实现 16000 IOPS 或更高的吞吐量。

对于不基于 AWS Nitro 系统的实例,在 128000 IOPS 下,当 I/O 大小为 16KiB 时,最大吞吐量可达到 2000MiB/s。

根据预调配 IOPS 卷扩展至最多 4,000MB/s

预调配多达 4000 MB/s 的额外吞吐量(对于 RDS for SQL Server,为 1000 MB/s)

1000MB/s(RDS for SQL Server 上为 250MB/s)

AWS CLI 及 RDS API 名称 io2 io1 gp3 gp2

磁性存储(旧版,不推荐)

Amazon RDS 还支持磁性存储以实现向后兼容。建议您采用通用型 SSD 或预调配 IOPS SSD 来满足所有新存储需求。下面是磁性存储的一些限制:

  • 不允许您在使用 SQL Server 数据库引擎时扩展存储。

  • 使用 SQL Server 数据库引擎时,不允许转换为其它存储类型。

  • 不支持存储自动伸缩。

  • 不支持弹性卷。

  • 限制为 3 TiB 的最大大小。

  • 限制为最大 1,000 IOPS。

专用日志卷(DLV)

您可以利用 Amazon RDS 控制台、AWS CLI 或 Amazon RDS API,将专用日志卷(DLV)用于使用预调配 IOPS(PIOPS)存储的数据库实例。DLV 将 PostgreSQL 数据库事务日志、MySQL/MariaDB 重做日志和二进制日志移动到与包含数据库表的卷不同的存储卷中。DLV 可以提高事务写入日志的效率和一致性。DLV 非常适合分配了较大存储空间、每秒 I/O(IOPS)要求较高或工作负载对延迟敏感的数据库。

DLV 支持 PIOPS 存储(io1 和 io2 Block Express),创建它们时的固定大小为 1000GiB,预调配 IOPS 为 3000。

注意

DLV 不支持通用存储(gp2 和 gp3)。

对于以下版本,Amazon RDS 在所有 AWS 区域都支持 DLV:

  • MariaDB 10.6.7 及更高的 10 版本

  • MySQL 8.0.28 及更高的 8 版本

  • PostgreSQL 13.10 及更高的 13 版本、14.7 及更高的 14 版本、15.2 及更高的 15 版本,以及 16.1 及更高的 16 版本

RDS 对多可用区部署支持 DLV。修改或创建多可用区实例时,会同时为主实例和辅助实例创建 DLV。

RDS 对于只读副本支持 DLV。如果主数据库实例启用了 DLV,则启用 DLV 后创建的所有只读副本也将具有 DLV。除非经过明确修改,否则在切换到 DLV 之前创建的任何只读副本都不会启用 DLV。我们建议在启用 DLV 之前连接到主实例的所有只读副本也要手动修改为具有 DLV。

在修改数据库实例的 DLV 设置后,数据库实例必须重新启动。

有关启用 DLV 的信息,请参阅使用专用日志卷(DLV)

监控数据库性能

Amazon RDS 提供了可供您用来确定如何执行数据库实例的多种指标。您可以在 Amazon RDS 管理控制台中的实例的摘要页上查看这些指标。您还可使用 Amazon CloudWatch 监控这些指标。有关更多信息,请参阅“在 Amazon RDS 控制台中查看指标”。增强监测提供了更详细的 I/O 指标;有关更多信息,请参阅使用增强监控来监控操作系统指标

以下指标对于监控数据库实例的性能很有帮助:

  • DiskQueueDepth:队列中等待处理的 I/O 请求数。这些是由应用程序提交但由于设备忙于处理其他 I/O 请求而尚未发送到设备的 I/O 请求。在队列中等待所花的时间是延迟和处理时间的一部分(不以指标形式提供)。该指标作为给定时间间隔内队列深度平均值进行报告。Amazon RDS 每隔 1 分钟报告队列深度。队列深度典型值在零至数百之间。

  • EBSByteBalance%:RDS 数据库的突增存储桶中剩余的吞吐量积分的百分比。此指标仅对基本监控可用。该指标值基于包括根卷在内的所有卷的吞吐量,而不是仅基于那些包含数据库文件的卷。

    当该指标接近零时,意味着数据库实例即将耗尽计算容量。如果这种情况经常发生,请考虑升级到更大的实例类大小,例如从 db.r6g.large 升级到 db.r6g.xlarge。有关更多信息,请参阅 数据库实例类

  • ReadIOPSWriteIOPS:每秒完成的 I/O 操作数。该指标作为给定时间间隔内 IOPS 平均值进行报告。Amazon RDS 每隔 1 分钟分别报告读取和写入 IOPS。TotalIOPS 是读取和写入 IOPS 的总和。IOPS 的典型值在零到每秒数万次之间。

    如果 TotalIOPS 值经常接近您为数据库实例设置的预调配 IOPS 值,请考虑增加预调配 IOPS(io1、io2 Block Express 和 gp3 存储类型)。

    测量的 IOPS 值与单个 I/O 操作的大小无关。这意味着,在您度量输入/输出性能时,确保查看实例的吞吐量,而不是输入/输出操作数量。

  • ReadLatencyWriteLatency:从提交 I/O 请求到完成请求之间的已用时间。该指标作为给定时间间隔内延迟平均值进行报告。Amazon RDS 每分钟分别报告一次读取和写入延迟。典型的延迟值以毫秒 (ms) 为单位。

  • ReadThroughputWriteThroughput:每秒传输到磁盘或从磁盘中传出的字节数。该指标作为给定时间间隔内吞吐量平均值进行报告。Amazon RDS 每隔 1 分钟分别报告读取和写入吞吐量,所用单位为每秒字节数(B/s)。吞吐量的典型值在零到 I/O 通道的最大带宽之间。

    如果吞吐量值经常接近数据库实例的最大吞吐量,则当您使用 gp3 存储类型时,可以考虑预调配更多的存储吞吐量。

影响数据库性能的因素

系统活动、数据库工作负载和数据库实例类可能影响数据库性能。

系统活动

以下系统相关活动圴使用 I/O 容量,并且可能会在执行这些活动时降低数据库实例性能:

  • 多可用区备用创建

  • 创建只读副本

  • 创建存储类型

数据库工作负载

在某些情况下,数据库或应用程序设计导致并发问题、锁定或其他形式的数据库争用。在这类情况下,您可能无法直接使用所有预配置的带宽。此外,您可能遇到以下与工作负载相关的情况:

  • 已到达基础实例类型的吞吐量限制。

  • 因为应用程序没有驱动足够的输入/输出操作,所以队列深度始终小于 1。

  • 您在数据库中遇到查询争用,即使部分 I/O 容量未使用也是如此。

在某些情况下,系统资源均未达到或接近限值且添加线程不会增加数据库事务速率。在这种情况下,瓶颈很可能是数据库中的争用。最常见的形式为行锁和索引页锁争用,但也有很多其他的可能性。如果您遇到的是这种情况,请征询数据库性能优化专家的意见。

数据库实例类

要让 Amazon RDS 数据库实例发挥最大性能,请选择具有足够带宽的最新一代实例类型来支持您的存储类型。例如,您可以选择 Amazon EBS 优化实例和具有 10GB 网络连接的实例。

重要

您可能会看到 IOPS 性能低于您可以使用 RDS 预置的最大值,具体取决于所使用的实例类。有关数据库实例类的 IOPS 性能的特定信息,请参阅《Amazon EC2 用户指南》中的 Amazon EBS 优化实例。我们建议您在为数据库实例设置预置 IOPS 值之前,先确定实例类的最大 IOPS。

我们建议您使用最新一代的实例以获得最佳性能。上一代的数据库实例还具有较低的存储上限。

一些较旧的 32 位文件系统的存储容量可能较低。要确定数据库实例的存储容量,可以使用 describe-valid-db-instance-modifications AWS CLI 命令。

以下列表显示了大多数数据库实例类可以为每个数据库引擎扩展到的最大存储:

  • Db2 – 64TiB

  • MariaDB – 64TiB

  • Microsoft SQL Server – 64TiB

  • MySQL – 64TiB

  • Oracle – 64TiB

  • PostgreSQL – 64TiB

下表显示了最大存储空间的一些例外情况(以 TiB 为单位)。所有独立于 io2 Block Express 存储的 RDS for Microsoft SQL Server 数据库实例的最大存储空间为 16 TiB,因此没有 SQL Server 的条目。

实例类 Db2 MariaDB MySQL Oracle PostgreSQL
db.m3 – 标准实例类
db.t4g – 具爆发能力的实例类
db.t4g.medium 不适用 16 16 不适用 32
db.t4g.small 不适用 16 16 不适用 16
db.t4g.micro 不适用 6 6 不适用 6
db.t3 – 具爆发能力的实例类
db.t3.medium 32 16 16 32 32
db.t3.small 32 16 16 32 16
db.t3.micro 不适用 6 6 32 6
db.t2 – 具爆发能力的实例类

有关支持的所有实例类的更多详情,请参阅上一代数据库实例