对于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的库,此时会读到脏数据:
1KB
最终一致性读
50 item / s
计算:因为最终一致性的RCU=2 reads,所以需要25个RCU。
1KB
强一致性读
50item / s
计算:因为强一致性的RCU=1 reads,所以需要50个RCU。
9KB
最终一致性坊
50item / s
计算:因为最终一致性的RCU=2reads,
且9KB =3 reads (每个read最大是4KB)
所以需要75个RCU。
WCU的计算一样,不过每个write最大是1KB。
8KB
50item/s
8 * 50 = 400个WCU
可以使用dynamodb自带的工具来计算WCU和RCU,在创建表时,Table Settings
选项使用Customize settings
,会出现Capacity Calculator
, 里面输入每个item大小及读写速度后,会自动计算出所需WCU和RCU: