DynamoDB はどれくらい速いですか?
速いです。DynamoDB はどんな規模でも、一貫した 1 桁ミリ秒の読み書きレイテンシを実現します。インメモリキャッシュの DynamoDB Accelerator(DAX)を加えると、結果整合性のある読み取りはマイクロ秒まで下がります。読み取りはスキャンではなくパーティションキーを直接狙うので、テーブルが大きくなってもパフォーマンスは平坦なまま、レイテンシはデータ量とともに劣化しません。
規模が大きくても速いままである理由
GetItem や Query はパーティションキーをハッシュして、正しい物理パーティションに直行します。テーブル全体をスキャンすることはないので、テーブルのアイテムが数千でも数十億でも、応答時間はおおむね一定です。
DAX によるマイクロ秒の読み取り
DAX はフルマネージドで DynamoDB 互換のインメモリキャッシュで、テーブルの前面に立ちます。結果整合性のある読み取りをマイクロ秒で返し — ミリ秒に対して最大 10 倍の改善 — キャッシュの無効化を管理する必要もありません。強い整合性のある読み取りが必要なワークロードには向きません。
ユーザーが実際に体感する数値
1 桁ミリ秒は DynamoDB のエンドポイントで測った数値です。アプリケーションが体感するのはそれにネットワークを足したもので、ネットワークの方が圧倒的に大きい半分であるのが普通です。
2026-07-28 にスペインの 1 台のマシンから、リージョンごとに 9 サンプル、各リージョンの DynamoDB エンドポイントへの TCP ハンドシェイクの中央値を測定しました。これはリクエストのバイトを 1 つも送る前の、1 往復ぶんです。
| リージョン | TCP ハンドシェイクの中央値 |
|---|---|
| eu-central-1(フランクフルト) | 46.6 ms |
| eu-south-2(スペイン) | 49.1 ms |
| eu-west-1(アイルランド) | 53.8 ms |
| us-east-1(北バージニア) | 113.6 ms |
| ap-northeast-1(東京) | 259.5 ms |
1 台のマシン、1 つの ISP、ある日の午後の測定なので、ベンチマークではなく桁として読んでください。そのうち 2 点は一般的に成り立ちます。大西洋横断の 1 往復は、それが運ぶ読み取りの 10 倍以上です。その距離では、あなたのレイテンシの中で DynamoDB のレイテンシは誤差になります。そして、マシンから地理的にもっとも近いリージョンが、そのマシンからもっとも速いリージョンではありませんでした。eu-south-2 はスペインにありますが、フランクフルトより良い数値は出していません。距離ではなくルーティングが決めるからです。
実務的に言えば、コンピュートをテーブルと同じ場所に置くことが、できるどんな DynamoDB のチューニングよりも効きます。テーブルと同じリージョンの Lambda 関数なら上の数値のごく一部で済みますが、別の大陸のノート PC や CI ジョブは接続のたびに全額を払います。SDK の接続再利用が見た目以上に重要なのもそのためです。
遅くなる要因
- スキャンとフィルタ — テーブル全体を読むのは遅くコストもかかります。代わりにキーベースのアクセスを設計しましょう。
- ホットパーティション — 1 つのパーティションキーが取り分をはるかに超えるトラフィックを集めると、テーブル全体のキャパシティに余裕があってもそのリクエストはスロットリングされます。
DynamoDB を速く保つのは、ハードウェアの増強ではなく良いキー設計です。
さらに詳しく
Query と Scan の比較を読み、ホットパーティションを避けましょう。どの読み取りが Query として、あるいは Scan として走るかを見るには DynoTable をダウンロードしてください。
参考資料
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
- In-memory acceleration with DynamoDB Accelerator (DAX) — Amazon DynamoDB Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Core components of Amazon DynamoDB — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。
レイテンシの数値は 2026-07-28 に、スペインの 1 台のマシンから curl を使い、リージョンごとに 9 リクエストを送って、https://dynamodb.<region>.amazonaws.com に対する time_connect から time_namelookup を引いた値の中央値として測定しました。独立した 2 回の実行は 3 ms 以内で一致しました。