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

Amazon RDS 数据库实例存储

Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 Microsoft SQL Server 的数据库实例使用 Amazon Elastic Block Store (Amazon EBS) 卷进行数据库和日志存储。根据所请求的存储量,Amazon RDS 自动将多个 Amazon EBS 卷分成条状以增强 性能。

Amazon RDS 存储类型

Amazon RDS 提供三个存储类型:通用型 SSD(也称为 gp2)、预置 IOPS SSD(也称为 io1)和磁性存储(也称为标准)。它们的性能特性和价格不同,这意味着您可以根据数据库工作负载需求定制存储性能和成本。您可以创建最多具有 64 TiB 存储的 MySQL、MariaDB、Oracle 和 PostgreSQL RDS 数据库实例。 您可以创建最多具有 16 TiB 存储的 SQL Server RDS 数据库实例。对于此存储量,请使用预配置 IOPS SSD 和通用型 (SSD) 存储类型。

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

  • 通用型 SSD – 通用型 SSD 卷提供了适用于各种工作负载的经济高效的存储。这些卷可以提供几毫秒的延迟,能够突增至 3000 IOPS 并维持一段较长的时间。这些卷的基准性能是由卷的大小决定的。

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

  • 预配置 IOPS – 预配置 IOPS 存储符合 I/O 密集型工作负载(尤其是数据库工作负载)的需求,此类工作负载需要低 I/O 延迟和一致的 I/O 吞吐量。

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

  • 磁性 – Amazon RDS 还支持磁性存储以实现向后兼容。我们建议您采用通用型 SSD 或预配置 IOPS 来满足所有新存储需求。磁性存储上的数据库实例允许的最大存储量少于其他存储类型的这种量。有关更多信息,请参阅磁性存储

有多种因素会影响 Amazon EBS 卷的性能,如实例配置、I/O 特性和工作负载需求。有关充分利用预配置 IOPS 卷的更多信息,请参阅 Amazon EBS 卷性能

通用型 SSD 存储

通用型 SSD 存储提供了可被大多数数据库工作负载接受的经济实用的存储。以下是通用型 SSD 数据库实例的存储大小范围:

  • MariaDB、MySQL、Oracle 和 PostgreSQL 数据库实例:20 GiB–64 TiB

  • SQL Server for Enterprise、Standard、Web 和 Express 版本:20 GiB–16 TiB

通用型 SSD 存储的基准 I/O 性能为 3 IOPS/GiB,最少具有 100 IOPS。这种关系意味着较大的卷具有更好的性能。例如,100 GiB 卷的基准性能为 300 IOPS。1 TiB 卷的基准性能为 3000 IOPS。而 5.34 TiB 卷的基准性能为 16000 IOPS。

大小低于 1 TiB 的卷也有能力在较长的时间内突增至 3000 IOPS。突增与 1 TiB 以上的卷无关。实例 I/O 积分余额决定突增性能。有关 I/O 积分的更多信息,请参阅I/O 积分和突增性能

很多工作负载永远不会耗尽突增余额,这使得通用型 SSD 成为很多工作负载的理想存储选择。不过,某些工作负载可能会用完 3000 IOPS 突增存储积分余额,因此,应计划存储容量以满足您的工作负载需求。

I/O 积分和突增性能

通用型 SSD 存储性能受卷大小的约束,它指示卷的基本性能水平和积累 I/O 积分的速度。卷越大,基本性能水平越高,积累 I/O 积分的速度越快。I/O 点数 表示可用带宽,供通用型 SSD 存储在需要超过基本性能水平的性能时突增大量 I/O。您的存储具有的 I/O 积分越多,它可以突增到基本性能水平以上的时间越长,并在您的工作负载需要时提供更高的性能。

使用通用型 SSD 存储时,数据库实例将收到 540 万个 I/O 积分的初始 I/O 积分余额。此初始积分余额足够维持 3,000 IOPS 的突增性能 30 分钟。设计余额的目的是为启动卷提供快速初始启动循环,并为其他应用程序提供良好的引导过程。卷以每 GiB 卷大小 3 IOPS 的基准性能率的速度获得 I/O 积分。例如,100-GiB SSD 卷具有基准性能 300 IOPS。

如果您的存储要求超过基本性能 I/O 水平,它将使用 I/O 积分余额中的 I/O 积分突增到所需的性能水平。这种突增最多可达 3,000 IOPS。大于 1,000 GiB 的存储具有等于或大于最大突增性能的基本性能。如果存储在一秒内使用的 I/O 积分少于它所获得的积分,未使用的 I/O 积分会加到 I/O 积分余额中。使用通用型 SSD 存储的数据库实例的最大 I/O 积分余额等于初始 I/O 积分余额 (540 万 I/O 积分)。

假设您的存储使用了所有其 I/O 积分余额。如果是这样,那么其最高性能将保持在基本性能水平,直到 I/O 需求降到基本水平以下并将未使用的 I/O 积分添加到 I/O 积分余额中。(基本性能水平 是存储获得 I/O 积分的速率。) 存储越多,基本性能就越高,它补充 I/O 积分余额的速率就越快。

注意

磁性存储和通用型 SSD 存储之间的存储转换可能会耗尽您的 I/O 积分余额,从而导致更长的转换时间。有关扩展存储的更多信息,请参阅使用 Storage for Amazon RDS 数据库实例

下表列出了多种存储大小。对于每个存储大小,它列出与存储相关的基本性能,也就是它积累 I/O 积分的速度。该表还列出了最大速率为 3,000 IOPS 时的突增持续时间,从完整 I/O 积分余额开始。此外,该表还列出了存储重新填满空 I/O 积分余额所需的秒数。

注意

在卷存储大小为 5334 GiB 时,IOPS 数字达到其最大值。

存储大小 (GiB) 基本性能 (IOPS) 3,000 IOPS 时的最大突增持续时间(秒) 填满空 I/O 积分余额所需的秒数
1 100 1862 54000
100 300 2000 18000
250 750 2400 7200
500 1500 3600 3600
750 2250 7200 2400
1000 3000 无限 不适用
5334 16000 不适用 不适用

存储的突增持续时间取决于存储大小、所需的突增 IOPS 以及突增开始时的 I/O 积分余额。在以下公式中显示了这种关系。

(Credit balance) Burst duration =  ------------------------------------ (Burst IOPS) - 3(Storage size in GiB)

您可能会注意到,由于空的 I/O 积分余额,您的存储性能常常限于到基本水平。如果是这样,请考虑分配一种具有更高基本性能级别的更通用的 SSD 存储。或者,您可以为需要持续 IOPS 性能的工作负载切换到预配置的 IOPS 存储。

对于具有稳定状态 I/O 要求的工作负载,配置低于 100 GiB 的通用型 SSD 存储可能会导致在用完 I/O 积分余额时出现更长的延迟。

注意

通常,大多数工作负载绝不会超过 I/O 积分余额。

有关基准性能和 I/O 点数余额如何影响性能的更详细说明,请参阅了解 Amazon RDS 和GP2 的突发与基准性能

预配置 IOPS SSD 存储

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

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

注意

您的数据库工作负载可能无法 100% 实现您预配置的 IOPS。

下表显示每个数据库引擎的预配置 IOPS 的范围和存储大小范围。

数据库引擎 预配置的 IOPS 的范围 存储的范围

MariaDB

1000–80000 IOPS 100 GiB–64 TiB
SQL Server Enterprise、Standard 和 Web 版本 1000–64000 IOPS* 20 GiB–16 TiB
SQL Server Express Edition 1000–64000 IOPS* 100 GiB–16 TiB
MySQL 1000–80000 IOPS 100 GiB–64 TiB
Oracle 1000–80000 IOPS 100 GiB–64 TiB
PostgreSQL 1000–80000 IOPS 100 GiB–64 TiB

* 最大 IOPS 64,000 仅在基于 Nitro 的实例(m5、r5 和 z1d 实例类型)上保证可以达到。其他实例系列可确保最高 32000 IOPS 的性能。有关数据库实例 IOPS 性能的更多信息,请参阅 Amazon EBS 优化实例

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

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

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

预配置的 IOPS 存储成本

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

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

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

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

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

磁性存储

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

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

  • 不支持存储自动伸缩。

  • 不支持弹性卷。

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

  • 限制为最大 1,000 IOPS。

监控存储性能

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

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

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

  • 延迟 – 从提交 I/O 请求到完成请求之间的已用时间。 该指标以给定时间间隔内延迟平均值的形式进行报告。Amazon RDS 每分钟分别报告一次读取和写入延迟,以秒为单位。 典型的延迟值以毫秒为单位。例如,Amazon RDS 将 2 毫秒报告为 0.002 秒。

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

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

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

影响存储性能的因素

系统活动和数据库工作负载均可能影响存储性能。

系统活动

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

  • 多可用区备用创建

  • 创建只读副本

  • 创建存储类型

数据库工作负载

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

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

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

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

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

数据库实例类

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

有关支持 EBS 优化的 Amazon EC2 实例类型的完整列表,请参阅支持 EBS 优化的实例类型

我们建议您使用最新一代的实例以获得最佳性能。上一代的数据库实例具有较低的实例存储限制。下表显示每个数据库实例类可为每个数据库引擎扩展的最大存储。所有值均为 TiB。

实例类 MariaDB Microsoft SQL Server MySQL Oracle PostgreSQL
db.m5 – 最新一代标准实例类
db.m5.24xlarge 64 16 64 64 64
db.m5.16xlarge 64 16 64 64 64
db.m5.12xlarge 64 16 64 64 64
db.m5.8xlarge 64 16 64 64 64
db.m5.4xlarge 64 16 64 64 64
db.m5.2xlarge 64 16 64 64 64
db.m5.xlarge 64 16 64 64 64
db.m5.large 64 16 64 64 64
db.m4 – 当前一代标准实例类
db.m4.16xlarge 64 16 64 64 64
db.m4.10xlarge 64 16 64 64 64
db.m4.4xlarge 64 16 64 64 64
db.m4.2xlarge 64 16 64 64 64
db.m4.xlarge 64 16 64 64 64
db.m4.large 64 16 64 64 64
db.m3 – 上一代标准实例类
db.m3.2xlarge 6 16 6 6 6
db.m3.xlarge 6 16 6 6 6
db.m3.large 6 16 6 6 6
db.m3.medium 32 16 32 32 32
db.r5 – 最新一代内存优化实例类
db.r5.24xlarge 64 16 64 64 64
db.r5.16xlarge 64 16 64 64 64
db.r5.12xlarge 64 16 64 64 64
db.r5.8xlarge 64 16 64 64 64
db.r5.4xlarge 64 16 64 64 64
db.r5.2xlarge 64 16 64 64 64
db.r5.xlarge 64 16 64 64 64
db.r5.large 64 16 64 64 64
db.r4 – 当前一代内存优化实例类
db.r4.16xlarge 64 16 64 64 64
db.r4.8xlarge 64 16 64 64 64
db.r4.4xlarge 64 16 64 64 64
db.r4.2xlarge 64 16 64 64 64
db.r4.xlarge 64 16 64 64 64
db.r4.large 64 16 64 64 64
db.r3 – 上一代内存优化实例类
db.r3.8xlarge 64 16 64 64 64
db.r3.4xlarge 64 16 64 64 64
db.r3.2xlarge 64 16 64 64 64
db.r3.xlarge 64 16 64 64 64
db.r3.large 64 16 64 64 64
db.t3 – 最新一代可突增性能实例类
db.t3.2xlarge 16 16 16 64 64
db.t3.xlarge 16 16 16 64 64
db.t3.large 16 16 16 64 64
db.t3.medium 16 16 16 32 32
db.t3.small 16 16 16 32 16
db.t3.micro 16 16 16 32 16
db.t2 – 当前一代可突增性能实例类
db.t2.2xlarge 64 16 64 64 64
db.t2.xlarge 64 16 64 64 64
db.t2.large 64 16 64 64 64
db.t2.medium 32 16 32 32 32
db.t2.small 16 16 16 16 16
db.t2.micro 16 16 16 16 16
db.x1e – 最新一代内存优化实例类
db.x1e.32xlarge 16 64
db.x1e.16xlarge 16 64
db.x1e.8xlarge 16 64
db.x1e.4xlarge 16 64
db.x1e.2xlarge 16 64
db.x1e.xlarge 16 64
db.x1 – 当前一代内存优化实例类
db.x1.32xlarge 16 64
db.x1.16xlarge 16 64

对于 Oracle,仅支持在以下实例类上扩展为最多 80000 IOPS。

  • db.m5.24xlarge

  • db.r5.24xlarge

  • db.x1.32xlarge

  • db.x1e.32xlarge

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