dynamoDBではthroughputの設定が料金に直結している。そのあたりを調べたのでわかったことをメモ。
throughputの消費
read
- 1unit = 1項目のconsistent read/sec (4KB以内)
- consistent readを使わなければ2回で1unitとなる
- 4KBを超える項目を読み込む場合は2unit以上が必要になる
- 例えば10KBのデータなら3units, 15KBなら4units
write
- 1unit = 1項目の書き込み/sec (1KB以内)
- 1KBを超える項目を読み込む場合は2unit以上が必要になる
- 例えば1.5KBなら2units、4KBなら4units
- indexが張られている場合はそちらへの書き込みも1項目分としてカウントされる
バースト時のthroughput
最大で直近300sec分の使っていないthroughtputをバーストに対して使うことができる。ただし、その部分のthroughtputはメンテなどの裏側の処理でも消費されているらしくフルで使えるわけではない。
partitionの設定
throughputとテーブルのデータ量に応じてpartition数が決定される。以下の式で算出されたpartition数のうち大きい方となる。
- throughput
partition数 = (read throughput) / 3000 + (write throughput) / 1000
- データ量
partition数 = (データ量) / 10GB
データ量はaws consoleの各テーブルの概要タブで確認できる。
参考
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html
http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GuidelinesForTables.html