DynamoDB 有多快?

很快。DynamoDB 在任何規模下都提供一致的個位數毫秒讀寫延遲。加上記憶體內快取 DynamoDB Accelerator(DAX),最終一致讀取可以縮短到微秒等級。效能不會隨資料表變大而下滑,因為讀取是直接鎖定分割區索引鍵而不是掃描,所以延遲不會隨資料量惡化。

為什麼它在大規模下仍然很快

一次 GetItemQuery 會對分割區索引鍵做雜湊,然後直接走到正確的實體分割區。它從不掃描整張資料表,所以不管資料表裡有幾千筆還是幾十億筆項目,回應時間大致固定。

用 DAX 達成微秒讀取

DAX 是一個全受管、與 DynamoDB 相容的記憶體內快取,擋在你的資料表前面。它以微秒回傳最終一致讀取 — 相較於毫秒最多可提升 10 倍 — 而且不需要你管理快取失效。它不適合需要強一致讀取的工作負載。

你的使用者真正看到的那個數字

個位數毫秒是在 DynamoDB 端點上量到的。你的應用程式體驗到的是那個數字再加上網路,而網路通常是其中大得多的那一半。

以下是 2026-07-28 從西班牙的一台機器量測的結果,每個區域九次取樣,取到各區域 DynamoDB 端點的 TCP 交握中位數。那是一次來回,發生在請求的第一個位元組送出之前:

區域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

一台機器、一家 ISP、一個下午,所以請把這些當成數量級,而不是基準測試。其中有兩件事是普遍成立的。一次跨大西洋的來回是它所承載那次讀取的十倍以上,所以在那個距離下,DynamoDB 的延遲在你的延遲裡只是捨入誤差。還有,地理上離那台機器最近的區域,從它連過去並不是最快的:eu-south-2 就在西班牙,量出來卻沒有比法蘭克福好,因為決定的是路由,不是距離。

實務上的結論是:把運算與資料表放在同一個區域,勝過任何你做得到的 DynamoDB 調校。跑在資料表所在區域的 Lambda 函式只付上表數字的一小部分;而在另一個大陸上的筆電或 CI 工作,每建立一次連線就得全額付清 — 這也是為什麼 SDK 的連線重複使用比它看起來更重要。

什麼會拖慢你

  • 掃描與過濾 — 讀取整張資料表既慢又貴;請改為設計以鍵為基礎的存取。
  • 熱分割區 — 當某個分割區索引鍵吸走遠超過它應得份額的流量時,即使整張資料表容量還很充裕,對它的請求仍會被節流。

讓 DynamoDB 保持快速的是好的鍵設計,不是更多硬體。

深入了解

請讀 query 與 scan 的比較,並避開熱分割區下載 DynoTable 來看看哪些讀取跑成了 Query、哪些跑成了 Scan。

參考資料

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。

延遲數據於 2026-07-28 從西班牙的一台機器以 curl 量測,每個區域九次請求,對 https://dynamodb.<region>.amazonaws.com 回報 time_connect 減去 time_namelookup 的中位數。兩次獨立執行的結果差距在 3 ms 以內。

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。