如何加速为 DynamoDB 表创建全局二级索引的过程?

上次更新时间:2020 年 6 月 24 日

我尝试为 Amazon DynamoDB 表创建全局二级索引 (GSI),但用了很长时间。如何加速创建过程?

简短描述

当您向现有表中添加新的全局二级索引时,索引状态将被设置为 CREATING,并且回填将被设置为 True。回填是从表中读取项目的过程,并确定是否可以将这些项目添加到索引中。构建全局二级索引所需的时间取决于多个因素,包括:

  • 基表的大小
  • 表中有资格包含在索引中的项目的数量
  • 计划放入索引中的属性的数量
  • 索引的预置写入容量
  • 索引创建过程中对基表执行的写入活动
  • 跨索引分区的数据分配

要加速创建过程,请增加索引的写入容量单位 (WCU) 数量。

解决方法

使用 OnlineIndexPercentageProgress Amazon CloudWatch 指标来监控索引创建进度:

  1. 打开 DynamoDB 控制台
  2. 在导航窗格中,选择,然后从列表中选择表。
  3. 选择指标选项卡。
  4. 选择查看所有 CloudWatch 指标
  5. 在搜索框中,输入 OnlineIndexPercentageProgress
    注意:如果搜索未返回任何结果,请稍加等待后即可显示指标。然后重试。
  6. 选择索引名称以查看进度。

用表大小(以 KB 为单位)除以希望的回填时间,从而确定所需的额外 WCU 数量。例如,假设您有一个 1GiB (1,074,000 KB) 的表。您希望回填过程在 10 分钟(600 秒)内完成。下面是计算您所需 WCU 数量的方法:

1,074,000 / 600 = 1,790 个 WCU

注意:这是一个估算值。创建时间会有所不同,具体取决于您如何跨多个分区分配键,有多少个项目,计划将表中的多少个属性放入到索引中等。

预置额外的写入容量:

  1. 打开 DynamoDB 控制台
  2. 在导航窗格中,选择,然后从列表中选择表。
  3. 选择容量选项卡。
  4. 增加索引的写入容量,然后选择保存
  5. 大约一分钟后,检查 OnlineIndexPercentageProgress 指标,以查看创建速度是否得到了提高。