未投影频繁变更属性的GSI是否因主表更新消耗WCU?
问题:未投影频繁变更属性到GSI,主表修改该属性时GSI会消耗WCU吗?
先看给出的示例结构:
主表示例:
{ id: '123', // 分区键 name: 'John', age: 22, isOnline: true // 频繁变更 }
GSI示例:
{ age: '22', // 分区键 id: '123', // 排序键 name: 'John' }
问题:若未将主表中频繁变更的属性(示例中的isOnline)投影到GSI,当修改主表中的该属性时,GSI是否仍会接收更新并消耗写入容量单位(WCU)?
回答
嘿,这个问题问得很实用!答案是不会,完全不会消耗GSI的WCU。
原因很简单:GSI的更新逻辑是只同步那些被你明确投影到它里面的属性(以及GSI自身分区键/排序键对应的主表属性)。如果主表中被修改的属性不在GSI的投影集合里,这次主表的更新操作根本不会触发GSI的任何写入动作——GSI甚至都不会感知到这个修改的存在。
拿你的示例来说,isOnline没有被投影到GSI里,当你修改主表的isOnline属性时,GSI的数据完全不会有任何变化,自然也不会消耗它的WCU。这其实也是一个优化成本的小技巧:把频繁变更但不需要在GSI里查询的属性排除在投影外,能有效节省GSI的写入开销。
内容的提问来源于stack exchange,提问作者Solo
相关产品推荐
相关产品推荐

