全局二级索引上的限流如何影响我的 Amazon DynamoDB 表?
上次更新日期:2021 年 11 月 5 日
我的全局二级索引 (GSI) 受到限流。这会如何影响基本 Amazon DynamoDB 表?
简短描述
GSI 上的限流会以不同的方式影响基本表,具体取决于限流针对的是读取还是写入活动:
- 如果 GSI 没有足够的读取容量,则基本表不会受到影响。
- 如果 GSI 没有足够的写入容量,则基本表或任何 GSI 上的写入操作均不会成功。
有关更多信息,请参阅在 DynamoDB 中使用全局二级索引。
解决方法
要防止限流,请执行以下操作:
- 请确保每个 GSI 的预置写入容量等于或大于基本表的预置写入容量。要修改 GSI 的预置吞吐量,请使用 UpdateTable 操作。如果已在基本表上启动了弹性伸缩,则最好对 GSI 应用相同的设置。您可以通过在 DynamoDB 控制台中选择 Copy from base table(从基本表中复制)来执行此操作。为获得最佳性能,请务必开启对所有全局二级索引使用相同的读/写容量设置。此选项可使 DynamoDB 弹性伸缩统一扩展基本表上的所有全局二级索引。有关更多信息,请参阅在现有表上启用 DynamoDB 弹性伸缩。
- 请确保 GSI 的分区键尽可能地在分区之间平均分布读取和写入操作。这有助于防止分区过热,导致限流。有关更多信息,请参阅设计分区键以均匀分布您的工作负载。
- 使用适用于 DynamoDB 的 Amazon CloudWatch Contributor Insights 来标识最常限流的键。