WCU和RCU

对于provisioned mode的表,需要指定表的throughput capacity(吞吐能力), 这个能力用RCU和WCU来设置

一个RCU(read capacity unit)代表着每秒一次强一致性读,或两次最终一致性读,并且每个item最大是4KB。如果是Transactional read,则每秒需要两个RCU。一个WCU代表着每秒一次写,且每个item最大是1KB;如果是Transactional write,则每秒需要两个WCU。

总结

RCU分强一致性和最终一致性:

强一致性读性能: 一个RCU = 每秒4KB

最终一致性读性能: 强一致性基础上乘以2


WCU不分强一致性(strongly consistent)最终一致性(eventually consistent)

一个单位 = 每秒 1KB

最终一致性模型产生的原因

我们往一个AZ的库里写,读的时候可能使用的是另一个AZ的库,此时会读到脏数据:

image-20220823230159223

如何计算RCU和WCU

场景一

  • 每个item平均大小为1KB
  • 选择最终一致性读
  • 预估每秒读 50 item / s

计算:因为最终一致性的RCU=2 reads,所以需要25个RCU。

场景二

  • 每个item平均大小为1KB
  • 选择强一致性读
  • 预估每秒读 50item / s

计算:因为强一致性的RCU=1 reads,所以需要50个RCU。

场景三

  • 每个item平均大小为9KB
  • 选择最终一致性坊
  • 预估每秒读 50item / s

计算:因为最终一致性的RCU=2reads,

且9KB =3 reads (每个read最大是4KB)

所以需要75个RCU。


WCU的计算一样,不过每个write最大是1KB。

场景一

  • 平均每个item为8KB
  • 预估写速率50item/s

8 * 50 = 400个WCU

使用工具计算

可以使用dynamodb自带的工具来计算WCU和RCU,在创建表时,Table Settings选项使用Customize settings,会出现Capacity Calculator, 里面输入每个item大小及读写速度后,会自动计算出所需WCU和RCU:

image-20220823230537647