本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DynamoDB 讀取操作可讓您透過指定分割區索引鍵值和選用的排序索引鍵值,從資料表擷取一或多個項目。使用 DynamoDB 寫入操作,您可以在資料表中插入、更新或刪除項目。本主題說明這兩個操作的容量單位耗用。
讀取操作的容量單位消耗
DynamoDB 讀取請求可以是高度一致的、最終一致的,也可以是交易式。
-
最多 4 KB 的項目的強烈一致讀取請求需要一個讀取單位。
-
最終一致的 4 KB 項目讀取請求需要半個讀取單位。
-
最多 4 KB 的項目的交易讀取請求需要兩個讀取單位。
若要進一步了解 DynamoDB 讀取一致性模式,請參閱 DynamoDB 讀取一致性。
讀取的項目大小會向上四捨五入到下一個 4 KB 倍數。例如,讀取 3,500 個位元組的項目,將會使用與讀取 4 KB 項目相同的輸送量。
如果您需要讀取大於 4 KB 的項目,DynamoDB 需要額外的讀取單位。所需的讀取單位總數取決於項目大小,以及您想要最終一致或強烈一致讀取。例如,如果您的項目大小為 8 KB,則需要 2 個讀取單位來維持一個強烈一致的讀取。如果您選擇最終一致讀取,則需要 1 個讀取單位,或選擇交易讀取請求需要 4 個讀取單位。
下列清單說明 DynamoDB 讀取操作如何使用讀取單位:
-
GetItem:從資料表讀取單一項目。若要判斷
GetItem
要使用的讀取單位數量,請測量項目大小,並將其四捨五入至下一個 4 KB 邊界。如果您指定強烈一致讀取,這是所需的讀取單位數量。對於最終一致讀取,這是預設值,請將此數字除以二。例如,如果您讀取的項目大小為 3.5 KB,則 DynamoDB 會將項目大小捨入為 4 KB。如果您讀取 10 KB 項目,則 DynamoDB 會將項目大小捨入為 12 KB。
-
BatchGetItem:最多可讀取一或多個資料表中的 100 個項目。DynamoDB 會將批次中的每個項目視為個別
GetItem
請求處理。DynamoDB 會先將每個項目的大小四捨五入到下一個 4 KB 邊界,然後計算總大小。結果不一定與所有項目的總大小相同。例如,如果BatchGetItem
讀取兩個大小為 1.5 KB 和 6.5 KB 的項目,DynamoDB 會計算大小為 12 KB (4 KB + 8 KB)。DynamoDB 不會將大小計算為 8 KB (1.5 KB + 6.5 KB)。 -
查詢:讀取具有相同分割區索引鍵值的多個項目。所有傳回的項目都會視為單一讀取操作,其中 DynamoDB 會計算所有項目的總大小。DynamoDB 接著將大小四捨五入到下一個 4 KB 邊界。例如,假設您的查詢傳回 10 個項目,其合併大小是 40.8 KB。DynamoDB 會將操作的項目大小四捨五入為 44 KB。如果查詢傳回各為 64 位元組的 1500 個項目,則累積大小為 96 KB。
-
掃描:讀取資料表中的所有項目。DynamoDB 會考量所評估項目的大小,而非掃描所傳回項目的大小。如需掃描操作的詳細資訊,請參閱 在 DynamoDB 中掃描資料表。
重要
如果您在不存在的項目上執行讀取操作,DynamoDB 仍會使用上述的讀取輸送量。對於 Query
/Scan
操作,即使沒有資料存在,您仍需根據讀取一致性和搜尋為提供請求的分割區數量支付額外的讀取輸送量費用。
針對傳回項目的任何操作,您可請求要擷取的部分屬性。不過,這樣做不會影響項目大小計算。此外,Query
和 Scan
也可以傳回項目計數,而非屬性值。取得項目計數會使用相同數量的讀取單位,且受限於相同的項目大小計算。這是因為 DynamoDB 必須讀取每個項目,才能遞增計數。
寫入操作的容量單位消耗
一個寫入單位代表大小不超過 1 KB 的項目的一個寫入。如果您需要寫入大於 1 KB 的項目,DynamoDB 需要消耗額外的寫入單位。交易寫入請求需要 2 個寫入單位,才能對最多 1 KB 的項目執行一個寫入。所需的寫入請求單位總數取決於項目大小。例如,如果您的項目大小為 2 KB,您需要 2 個寫入單位來維持一個寫入請求,或 4 個寫入單位來處理交易寫入請求。
寫入的項目大小會向上四捨五入到下一個 1 KB 倍數。例如,寫入 500 個位元組的項目,將會使用與寫入 1 KB 項目相同的輸送量。
下列清單說明 DynamoDB 寫入操作如何使用寫入單位:
-
PutItem:將單一項目寫入資料表。如果資料表中已有具有相同主索引鍵的項目,則操作會取代該項目。若要計算佈建輸送量使用,則有關的項目大小是兩者中較大的一個。
-
UpdateItem:修改資料表中的單一項目。DynamoDB 會考量項目在更新前後所顯示的大小。使用的佈建輸送量會反映這些項目大小中較大的一個。即使您更新項目屬性的子集,
UpdateItem
仍會耗用完整數量的佈建輸送量 (「之前」和「之後」項目大小的較大者)。 -
DeleteItem:從資料表中移除單一項目。佈建輸送量使用是根據所刪除項目的大小。
-
BatchWriteItem:最多將 25 個項目寫入一或多個資料表。DynamoDB 會將批次中的每個項目作為個別
PutItem
或DeleteItem
請求處理 (不支援更新)。DynamoDB 會先將每個項目的大小四捨五入到下一個 1 KB 邊界,然後計算總大小。結果不一定與所有項目的總大小相同。例如,如果BatchWriteItem
寫入兩個大小為 500 位元組和 3.5 KB 的項目,DynamoDB 會將大小計算為 5 KB (1 KB + 4 KB)。DynamoDB 不會將大小計算為 4 KB (500 位元組 + 3.5 KB)。
針對 PutItem
、UpdateItem
和 DeleteItem
操作,DynamoDB 會將項目大小捨入至下一個 1 KB。例如,如果您放置或刪除 1.6 KB 項目,則 DynamoDB 會將項目向上四捨五入到 2 KB。
PutItem
、 UpdateItem
和 DeleteItem
操作允許條件式寫入,您可以在其中指定必須評估為 true 的表達式,才能成功操作。如果表達式計算結果為 false,則 DynamoDB 仍然會從資料表使用寫入容量單位:耗用的寫入容量單位數量取決於項目的大小。此項目可以是資料表中的現有項目,或您正在嘗試建立或更新的新項目。例如,假設現有項目為 300 KB。您嘗試建立或更新的新項目為 310 KB。新項目使用的寫入容量單位將為 310 KB。