本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon DynamoDB 的限制
本節說明 Amazon DynamoDB 中的當前配額 (過去稱為限制)。
主題
讀取/寫入容量模式
您可在 24 小時滾動期間內,最多將資料表從佈建容量模式切換至隨需模式四次。您可隨時將資料表從隨需模式切換回佈建容量模式。
如需了解如何在讀取與寫入容量模式間切換,請參閱 切換 DynamoDB 容量模式時的注意事項。
容量單位大小 (已佈建的資料表)
一個讀取容量單位 = 每秒一個高度一致性讀取,或每秒兩個最終一致讀取,適用於大小上限為 4 KB 的項目。
一個寫入容量單位 = 每秒一個寫入,適用於大小上限為 1 KB 的項目。
交易讀取請求需要 2 個讀取容量單位才能執行每秒讀取一個大小上限為 4 KB 的項目。
交易讀取請求需要兩個寫入容量單位才能執行每秒寫入一個大小上限為 1 KB 的項目。
請求單位大小 (隨需資料表)
一個讀取請求單位 = 每秒一個高度一致性讀取,或每秒兩個最終一致讀取,適用於大小上限為 4 KB 的項目。
一個寫入請求單位 = 每秒一個寫入,項目大小上限為 1 KB。
交易讀取請求需要兩個讀取請求單位,才能執行每秒讀取一個大小上限為 4 KB 的項目。
交易讀取請求需要兩個寫入請求單位,才能執行每秒寫入一個大小上限為 1 KB 的項目。
次要索引
每份資料表的預估次要索引屬性
您最多可以投影 100 個屬性到資料表所有的區域和全域次要索引。這只適用於使用者指定的投影屬性。
在 CreateTable 操作中,如果您指定 INCLUDE 的 ProjectionType,則 NonKeyAttributes 中指定的屬性總數,即所有次要索引總數,絕對不能超過 100。如果您將相同的屬性名稱投影到兩個不同的索引,在判斷總數時,這會計算為兩個不同的屬性。
這項限制不適用於含 KEYS_ONLY 或 ALL 的 ProjectionType 的次要索引。
分割區索引鍵和排序索引鍵
分割區索引鍵長度
分割區索引鍵值的長度下限為 1 個位元組。長度上限為 2048 個位元組。
分割區索引鍵值
資料表或次要索引中,不同的分割區索引鍵值數目沒有實際限制。
排序索引鍵長度
排序索引鍵值的長度下限為 1 個位元組。長度上限為 1024 個位元組。
排序索引鍵值
一般而言,每個分割區索引鍵值的相異排序索引鍵值數目沒有實際限制。
例外狀況是有次要索引的資料表。項目集合是具有相同分割區索引鍵屬性值的一組項目。在全域次要索引中,項目集合與基礎資料表相互獨立 (而且可以具有不同的分割區索引鍵屬性),但在本機次要索引中,索引檢視會與資料表中的項目共同存在於相同的分割區中,並共用相同的分割區索引鍵屬性。鑑於此位置資訊,當資料表擁有一或多個 LSI 時,項目集合無法分發至多個分割區。
對於具有一或多個 LSI 的資料表,項目集合的大小不得超過 10GB。這包括所有基礎資料表項目,以及具有與分割區索引鍵屬性相同值的所有投影 LSI 視圖。分割區的大小上限為 10GB。如需詳細資訊,請參閱項目集合大小限制。
命名規則
資料表名稱和次要索引名稱
資料表和次要索引名稱至少必須為 3 字元長,但不能超過 255 個字元。以下為允許的字元:
-
A-Z -
a-z -
0-9 -
_(底線) -
-(連字號) -
.(點號)
屬性名稱
一般而言,屬性名稱至少必須為一個字元長,但不能超過 64 KB。
以下為例外狀況。這些屬性名稱絕對不能超過 255 個字元。
-
次要索引分割區索引鍵名稱。
-
次要索引排序索引鍵名稱。
-
任何使用者指定的投影屬性名稱 (僅適用於本機次要索引)。在
CreateTable操作中,如果您指定ProjectionType為INCLUDE,則NonKeyAttributes參數中的屬性名稱會有長度限制。KEYS_ONLY和ALL投影類型不受影響。
這些屬性名稱必須使用 UTF-8 編碼,而且各名稱大小總計 (編碼後) 不能超過 255 個位元組。
資料類型
字串
字串長度受到項目大小上限 400 KB 的限制。
字串是 UTF-8 二進位編碼的 Unicode。因為 UTF-8 是一種變動寬度的編碼方式,所以 DynamoDB 會使用其 UTF-8 位元組判斷字串的長度。
數字
數字的精準度最多可達 38 位數,可為正數、負數或零。
-
正數範圍:
1E-130到9.9999999999999999999999999999999999999E+125 -
負數範圍:
-9.9999999999999999999999999999999999999E+125到-1E-130
DynamoDB 使用 JSON 字串表示請求與回覆中的數字資料。如需詳細資訊,請參閱 DynamoDB 低階 API。
若數字精確度很重要,則應使用從數字類型轉換而來的字串,將數字傳遞到 DynamoDB。
二進位
二進位長度受到項目大小上限 400 KB 的限制。
使用二進制屬性的應用程式必須先以 Base64 格式編碼資料,再傳送到 DynamoDB。DynamoDB 收到這些資料後,會將資料解碼為不帶正負號的位元組陣列,並用為屬性長度。
項目
項目大小
DynamoDB 的項目大小上限是 400 KB,包括屬性名稱二進位長度 (UTF-8 長度) 和屬性值長度 (又一個二進位長度)。屬性名稱算作大小限制的一部分。
例如,假設一個有兩個屬性的項目:一個屬性名為 "shirt-color",其值為 "R",另一個屬性名為 "shirt-size",其值為 "M"。該項目的大小總計為 23 位元組。
具有本機次要索引之資料表的項目大小
針對資料表中每一個本機次要索引,每一個於下列總計的限制為 400 KB:
-
資料表的項目資料大小。
-
本機次要索引中對應項目 (包括其索引鍵值及投影屬性) 的大小。
屬性
每個項目的屬性名稱/值對
每個項目的屬性累積大小必須符合 DynamoDB 項目大小上限 (400 KB)。
清單、映射或集合的值數目
清單、映射或集合中值數目不限,只要含有值的項目符合 400 KB 項目大小限制。
屬性值
如果屬性未用作為資料表或索引的索引鍵屬性,則允許空字串和二進制屬性值。集合、清單和映射類型中允許空字串和二進位值。屬性值不得為空的集合 (字串集合、數字集合或二進位集合)。不過,允許空白清單與映射。
巢狀屬性深度
DynamoDB 支援巢狀屬性,最多 32 層深。
表達式參數
表達式參數包括 ProjectionExpression、ConditionExpression、UpdateExpression 和 FilterExpression。
長度
任何表達式字串的長度上限為 4 KB。例如,ConditionExpression a=b 的大小是 3 個位元組。
任何單一表達式屬性名稱或表達式屬性值的長度上限是 255 個位元組。例如,#name 是 5 個位元組;:val 是 4 個位元組。
表達式中所有替換變數的長度上限為 2 MB。這是所有 ExpressionAttributeNames 和 ExpressionAttributeValues 的長度加總。
運算子和運算元
UpdateExpression 中允許的運算子或函數數目上限為 300。例如,UpdateExpression SET a = :val1 + :val2 + :val3 包含兩個 "+" 運算子。
IN 比較子的運算元數目上限為 100。
保留字
DynamoDB 不會阻止您使用與保留字衝突的名稱。(如需完整清單,請參閱「DynamoDB 中的保留字」。)
但如果您在表達式參數中使用了保留字,您必須也要指定 ExpressionAttributeNames。如需詳細資訊,請參閱 DynamoDB 中的表達式屬性名稱 (別名)。
DynamoDB 交易
DynamoDB 交易 API 操作有下列限制:
-
一個交易不能包含超過 100 個不同的動作。
-
一個交易不能包含超過 4 MB 的資料。
-
交易中的任何兩個動作皆無法對相同資料表中的相同項目進行操作。例如,您不能在一個交易中,對相同項目同時進行
ConditionCheck與Update。 -
一個交易無法對一個以上的 AWS 帳戶或區域中的資料表進行操作。
-
交易操作僅在最初進行寫入的 AWS 區域內提供原子性、一致性、隔離性和耐久性 (ACID) 保證。全域資料表不支援跨區域交易。舉例來說,假設您在美國東部 (俄亥俄) 與美國西部 (奧勒岡) 區域中有具有複本的全域資料表,並且在美國東部 (維吉尼亞北部) 區域中執行
TransactWriteItems操作。這麼做會使變更受到複寫,所以您可能會在美國西部 (奧勒岡) 區域中看到部分已完成交易。當變更已在來源區域遞交後,這些變更才會複寫至其他區域。
DynamoDB Streams
DynamoDB Streams 中的碎片同時讀取
對於不是全域資料表的單一區域資料表,您最多可以設計兩個程序,以便同時讀取同一個 DynamoDB Streams 碎片。超過此限制會導致請求限流。對於全域資料表,我們建議您將同時讀取的數量限制為一個,以避免請求限流。
DynamoDB Accelerator (DAX)
AWS 區域可用性
如需提供 DAX 的 AWS 區域清單,請參閱 AWS 一般參考 中的 DynamoDB Accelerator (DAX)。
節點
DAX 叢集包含一個主節點和 0 到 10 個僅供讀取複本節點。
單一 AWS 區域的節點總數 (每個 AWS 帳戶) 不能超過 50。
參數群組
每個區域最多可以建立 20 個 DAX 參數群組。
子網路群組
每個區域最多可以建立 50 個 DAX 子網路群組。
您可在子網路群組內定義最多 20 個子網路。
重要
DAX 叢集最多支援 500 個 DynamoDB 資料表。一旦超過 500 個 DynamoDB 資料表,叢集可能在可用性和效能方面遭到降級。
API 特定限制
CreateTable/UpdateTable/DeleteTable/PutResourcePolicy/DeleteResourcePolicy-
一般而言,您最多可以同時以任何組合執行 500 個 CreateTable、UpdateTable、DeleteTable、PutResourcePolicy 和 DeleteResourcePolicy 請求。換言之,
CREATING、UPDATING或DELETING狀態的資料表總數不能超過 500。您可以跨資料表群組,提交每秒最多 2,500 個可變 (
CreateTable、DeleteTable、UpdateTable、PutResourcePolicy和DeleteResourcePolicy) 控制平面 API 請求。不過,PutResourcePolicy和DeleteResourcePolicy請求的個別限制較低。如需詳細資訊,請參閱下列PutResourcePolicy和DeleteResourcePolicy的配額詳細資料。包含資源型政策的
CreateTable和PutResourcePolicy請求會作為兩個額外請求計入政策的每個 KB。例如,大小 5 KB 的政策的CreateTable或PutResourcePolicy請求將計為 11 個請求。CreateTable請求 1 個,資源型政策 10 個 (2 x 5 KB)。同樣地,大小 20 KB 的政策將計為 41 個請求。CreateTable請求 1 個,資源型政策 40 個 (2 x 20 KB)。PutResourcePolicy-
您可以在一組資料表中每秒提交最多 25 個
PutResourcePolicyAPI 請求。在針對個別資料表成功請求後,在接下來的 15 秒內不支援新的PutResourcePolicy請求。資源型政策文件的最大支援大小為 20 KB。DynamoDB 在依此限制計算政策大小時,會將空白字元納入計算。
DeleteResourcePolicy-
您可以在一組資料表中每秒提交最多 50 個
DeleteResourcePolicyAPI 請求。在針對個別資料表的PutResourcePolicy請求成功後,在接下來的 15 秒內不支援任何DeleteResourcePolicy請求。
BatchGetItem-
單一
BatchGetItem操作最多可擷取 100 個項目。所有擷取項目大小總計不能超過 16 MB。
BatchWriteItem-
單一
BatchWriteItem操作最多可以包含 25 個PutItem或DeleteItem請求。所有寫入項目大小總計不能超過 16 MB。
DescribeStream-
您可以每秒最多呼叫
DescribeStream10 次。
DescribeTableReplicaAutoScaling-
DescribeTableReplicaAutoScaling方式僅支援每秒 10 個請求。
DescribeLimits-
DescribeLimits應只能定期呼叫。如果每分鐘呼叫一次以上,您應該會收到限流錯誤。
DescribeContributorInsights/ListContributorInsights/UpdateContributorInsights-
DescribeContributorInsights、ListContributorInsights和UpdateContributorInsights應只能定期呼叫。DynamoDB 於每個 API 支援最多每秒五個請求。
DescribeTable/ListTables/GetResourcePolicy-
您每秒最多能提交 2,500 個唯讀 (
DescribeTable、ListTables和GetResourcePolicy) 控制平面 API 請求的組合。GetResourcePolicyAPI 的個別限制較低,為每秒 100 個請求。
DescribeTimeToLive-
DescribeTimeToLive操作會限流為每秒 10 個讀取請求單位。如果您超過此限制,DynamoDB 會傳回ThrottlingException錯誤。
Query-
Query的結果集受到每次呼叫為 1 MB 的限制。您可以使用查詢回應的LastEvaluatedKey擷取更多結果。
Scan-
Scan的結果集受到每次呼叫為 1 MB 的限制。您可以使用掃描回應的LastEvaluatedKey擷取更多結果。
UpdateKinesisStreamingDestination-
執行
UpdateKinesisStreamingDestination操作時,最多可以在 24 小時內ApproximateCreationDateTimePrecision將設為新值 3 次。
UpdateTableReplicaAutoScaling-
UpdateTableReplicaAutoScaling方式僅支援每秒 10 個請求。
UpdateTableTimeToLive-
每小時針對每個指定資料表,此
UpdateTableTimeToLive方法僅支援一個啟用或停用Time to Live (TTL)的請求。完整處理此變更最多可能需要一個小時。在此一小時期間內,對相同資料表的額外UpdateTimeToLive呼叫會導致 ValidationException 狀況。
DynamoDB 靜態加密
從資料表建立起算 24 小時內,您可以在每份資料表中隨時在 AWS 擁有的金鑰、AWS 受管金鑰 及客戶自管金鑰之間切換,最多四次。如果過去 6 小時內沒有變化,則允許額外變更。這會有效地將一天的變更次數增加到 8 次 (第一個 6 小時內 4 次變更,以及一天中後續每 6 小時 1 次的變更)。
即使上述配額已耗盡,您也可以視需要隨時切換加密金鑰來使用 AWS 擁有的金鑰。
除非您請求較高的數量,否則配額如下。若要請求提高服務配額,請參閱 https://aws.amazon.com/support