

# I/O 密集型存储修改
<a name="USER_PIOPS.IOIntensive"></a>

Amazon RDS 数据库实例使用 Amazon Elastic Block Store（EBS）卷进行数据库和日志存储。根据所请求的存储量，RDS（RDS for SQL Server 除外）自动跨多个 Amazon EBS 卷进行*条带化*以增强性能。具有 SSD 存储类型的 RDS 数据库实例由 RAID 0 配置中的一个或四个条带化 Amazon EBS 卷提供支持。根据设计，RDS 数据库实例的存储修改操作对正在进行的数据库操作的影响极小。

在大多数情况下，存储扩展修改完全卸载到 Amazon EBS 层，并且对于数据库是透明的。该过程通常在几分钟内完成。但是，一些较旧的 RDS 存储卷需要不同的过程来修改大小、预调配 IOPS 或存储类型。这涉及使用潜在 I/O 密集型操作制作数据的完整副本。

如果以下任何因素适用，则存储修改将使用 I/O 密集型操作：
+ 源存储类型是磁性的。磁性存储不支持弹性卷修改。
+ RDS 数据库实例不在单卷或四卷的 Amazon EBS 布局上。您可以使用增强监控指标查看 RDS 数据库实例上正在使用的 Amazon EBS 卷的数量。有关更多信息，请参阅 [在 RDS 控制台中查看操作系统指标](USER_Monitoring.OS.Viewing.md)。
+ 修改请求的目标大小对于 RDS for MariaDB、MySQL 和 PostgreSQL 实例将分配的存储空间增加到 400GiB 以上，而对于 RDS for Oracle 则增加到 200GiB 以上。当存储自动扩展操作将数据库实例的分配存储大小增加到超过这些阈值时，其效果相同。

如果您的存储修改涉及 I/O 密集型操作，则会消耗 I/O 资源并增加数据库实例的负载。如果使用涉及通用 SSD（gp2）存储的 I/O 密集型操作进行存储修改，则可能会耗尽 I/O 积分余额，从而导致转换时间更长。

作为最佳做法，我们建议将这些存储修改请求安排在高峰时段以外，以帮助减少完成存储修改操作所需的时间。或者，您可以创建数据库实例的只读副本，并在只读副本上执行存储修改。然后，将只读副本提升为主数据库实例。有关更多信息，请参阅 [使用数据库实例只读副本](USER_ReadRepl.md)。

有关更多信息，请参阅[当我尝试增加分配的存储时，为什么 Amazon RDS 数据库实例卡在修改状态？](https://aws.amazon.com/premiumsupport/knowledge-center/rds-stuck-modifying/)