DynamoDB中全局二级索引(GSI)支持的非键属性最大数量是多少
DynamoDB GSI非键属性投影限制及解决方案
GSI非键属性数量限制说明
你提到的20个非键属性限制是本地二级索引(LSI)独有的规则,该规则不适用于全局二级索引(GSI):
AWS官方明确规定,LSI使用
INCLUDE类型投影时最多只能指定20个非键属性,但GSI无此单独配额限制。GSI使用INCLUDE投影时可指定的非键属性数量仅受DynamoDB单条项目最大400KB的全局规则约束,只要投影的属性总大小不超过该上限即可正常配置。
可行解决方案
- 优先使用
INCLUDE投影类型:直接将你需要的所有非键属性全部列入GSI的投影配置中即可,无需使用ALL参数投影全量属性,可大幅降低不必要的存储成本。 - 冷热属性拆分优化:如果你的查询场景可接受少量回表操作,可将高频查询的属性直接投影到GSI,低频访问的属性在查询到GSI结果后,通过主键回查原表获取,进一步缩小GSI的存储占用。
- 多GSI拆分适配场景:如果存在多个不同的查询场景,每个场景需要的属性集合差异较大,可以拆分创建多个GSI,每个GSI仅投影对应场景需要的属性,避免单个GSI存储冗余属性。
额外提示:每个DynamoDB表默认最多可创建20个GSI,如有更高需求可向AWS申请提升配额。
内容的提问来源于stack exchange,提问作者haohaolee
相关产品推荐
相关产品推荐

