本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon DynamoDB 中的服務、帳戶和資料表配額
本節說明 Amazon DynamoDB 中的當前配額 (過去稱為限制)。各項配額除非另有說明,否則都是區域特定規定。
主題
讀取/寫入容量模式與輸送量
您可以隨時將資料表從隨需模式切換為佈建容量模式。當您在容量模式之間進行多個切換時,適用下列條件:
-
您可以隨時將新建立的隨需模式資料表切換為佈建容量模式。不過,您只能在資料表建立時間戳記的 24 小時後將其切換回隨需模式。
-
您可以隨時將現有 資料表的隨需模式切換為佈建容量模式。不過,您只能在最後一個時間戳記後 24 小時將其切換回隨需模式,表示切換到隨需模式。
如需在讀取和寫入容量模式之間切換的詳細資訊,請參閱 在 DynamoDB 中切換容量模式時的考量。
容量單位大小 (已佈建的資料表)
一個讀取容量單位 = 每秒一個高度一致性讀取,或每秒兩個最終一致讀取,適用於大小上限為 4 KB 的項目。
一個寫入容量單位 = 每秒一個寫入,適用於大小上限為 1 KB 的項目。
交易讀取請求需要 2 個讀取容量單位才能執行每秒讀取一個大小上限為 4 KB 的項目。
交易讀取請求需要兩個寫入容量單位才能執行每秒寫入一個大小上限為 1 KB 的項目。
請求單位大小 (隨需資料表)
一個讀取請求單位 = 每秒一個高度一致性讀取,或每秒兩個最終一致讀取,適用於大小上限為 4 KB 的項目。
一個寫入請求單位 = 每秒一個寫入,項目大小上限為 1 KB。
交易讀取請求需要兩個讀取請求單位,才能執行每秒讀取一個大小上限為 4 KB 的項目。
交易讀取請求需要兩個寫入請求單位,才能執行每秒寫入一個大小上限為 1 KB 的項目。
輸送量預設配額
AWS 會將一些預設配額放在您的帳戶可在區域中佈建和使用的輸送量上。
帳戶層級的讀取輸送量和帳戶層級的寫入輸送量配額適用於帳戶層級。這些帳戶層級配額適用於給定區域中您帳戶的所有資料表和全域次要索引的佈建輸送容量總和。帳戶的所有可用輸送量可佈建至單一資料表或多份資料表。這些配額僅適用於使用佈建容量模式的資料表。
資料表層級的讀取輸送量和資料表層級的寫入輸送量配額,會以不同方式套用至使用佈建容量模式的資料表以及使用隨需容量模式的資料表。
對於佈建的容量模式資料表 和 GSIs,配額是可為任何資料表或GSIs區域中的任何資料表佈建的讀取和寫入容量單位數量上限。任何個別資料表及其所有資料表的總計GSIs也必須保持在帳戶層級的讀取和寫入輸送量配額以下。這是除了要求所有佈建資料表的總數及其GSIs必須保持在帳戶層級的讀取和寫入輸送量配額以下。
對於隨需容量模式資料表 和 GSIs,資料表層級配額是任何資料表或資料表GSI內任何個人可用的最大讀取和寫入容量單位。在隨需模式下,不會將帳戶層級的讀取和寫入輸送量配額套用至資料表。
根據預設,以下是適用於您帳戶的輸送量配額。
輸送量配額名稱 | On-Demand | 佈建 | 可調整 |
---|---|---|---|
|
|
|
是 |
|
|
|
是 |
|
|
|
是 |
您可以視需要使用 Service Quotas 主控台
對於您的帳戶層級輸送量配額,您可以使用 Service Quotas 主控台AccountProvisionedReadCapacityUnits
和 用量指標來監控AccountProvisionedWriteCapacityUnits
AWS 用量。若要進一步了解使用量指標,請參AWS 使用量指標。
提高或降低輸送量 (已佈建的資料表)
提高佈建輸送量
您可以視需要經常提高 ReadCapacityUnits
或 WriteCapacityUnits
,使用 AWS Management Console
或 UpdateTable
操作。在單一呼叫中,您可以提高資料表、該資料表中任何全域次要索引,或這些項目任意組合的佈建輸送量。新的設定值要在 UpdateTable
操作完成後才會生效。
當您新增佈建容量時,不能超過您的每個帳戶配額,而且 DynamoDB 不允許您非常快速地提高佈建容量。在這些限制之外,您可以將您資料表的佈建容量提高至您需要的數量。如需每個帳戶配額的詳細資訊,請參閱前一節 輸送量預設配額。
降低佈建輸送量
您可以在 UpdateTable
操作中降低每個資料表和全域次要索引的 ReadCapacityUnits
或 WriteCapacityUnits
(或兩個都降低)。新的設定值要在 UpdateTable
操作完成後才會生效。
您每天可以在 DynamoDB 資料表上執行的佈建容量減少的次數存在預設配額。日期是根據國際標準時間座標 () 定義UTC。在給定的一天,只要您在當天還沒有執行任何其他減少,您可以在一小時內執行最多四次減少。然後,您可以每小時執行一次額外的減少 (每 60 分鐘一次)。這可有效地將一天內的最大減少次數提高到 27 次。
您可以視需要使用 Service Quotas 主控台
重要
資料表和全域次要索引調降限制是分開的,所以特定資料表的任何全域次要索引皆有各自的調降限制。但如果單一請求降低了資料表和全域次要索引的輸送量,只要其中之一超過目前的限制就會遭到拒絕。請求未得到部分處理。
範例
在一天的第一個 4 小時中,具有全域次要索引的資料表可依下列方式修改:
-
調降資料表的
WriteCapacityUnits
或ReadCapacityUnits
(或兩者) 四次。 -
調降全域次要索引的
WriteCapacityUnits
或ReadCapacityUnits
(或兩者) 四次。
在同一天結束時,資料表和全域次要索引的輸送量有可能各調降 27 次。
預留容量
AWS 會將預設配額放在您的帳戶可以購買的作用中預留容量數量上。配額限制是寫入容量單位 (WCUs) 和讀取容量單位 () 的預留容量組合RCUs。
預留容量配額 | 作用中的預留容量 | 可調整 |
---|---|---|
每個 帳戶 |
1,000,000 個佈建容量單位 (WCUs _ RCUs) |
是 |
如果您嘗試單次購買超過 1,000,000 個佈建容量單位,將會收到此服務配額限制錯誤訊息。如果您擁有作用中的預留容量,並嘗試購買額外的預留容量,導致作用中的佈建容量單位總數超過 1,000,000 個,也會收到此服務配額限制錯誤訊息。
如果您的預留容量需求超過 1,000,000 個佈建容量單位,可以向支援
匯入配額
Amazon S3 的 DynamoDB 匯入可支援多達 50 個並行匯入任務,在 us-east-1、us-west-2 和 eu-west-1 區域的匯入來源物件大小總計達 15TB。在所有其他區域中,最多支援 50 個並行匯入任務,大小總計為 1TB。每個匯入任務在所有區域中最多可以佔用 50,000 個 Amazon S3 物件。如需匯入和驗證的詳細資訊,請參閱匯入格式配額與驗證。
Contributor Insights
當您在 DynamoDB 資料表上啟用 Customer Insights 時,您仍然受限於 Contributor Insights 規則限制。如需更多相關資訊,請參閱 CloudWatch Service Quotas。
資料表
資料表大小
資料表大小沒有任何實際限制。就項目數或位元組數而言,資料表是沒有限制的。
每個帳戶每個區域的資料表數目上限
對於任何 AWS 帳戶,每個 AWS 區域的初始配額為 2,500 個資料表。
如果單一帳戶需要超過 2,500 個資料表,請聯絡您的 AWS 客戶團隊,了解將資料表數量增加到最多 10,000 個的可能性。如需超過 10,000 個資料表,建議的最佳實務是設定多個帳戶,每個帳戶最多可以提供 10,000 個資料表。
您可以使用 Service Quotas 主控台
使用 Service Quotas 主控台TableCount
AWS 用量。若要進一步了解使用量指標,請參AWS 使用量指標。
全域資料表
AWS 會在您使用全域資料表時佈建或使用的輸送量上放置一些預設配額。
預設全域資料表配額 | On-Demand | 佈建 |
---|---|---|
|
|
|
|
|
|
交易操作提供原子性、一致性、隔離和耐久性 (ACID) 保證,僅在最初進行寫入的 AWS 區域中。全域資料表不支援跨區域交易。例如,假設您的全域資料表在美國東部 (俄亥俄) 和美國西部 (奧勒岡) 區域具有複本,並且在美國東部 (維吉尼亞北部) 區域執行 TransactWriteItems 操作。這麼做會使變更受到複寫,所以您可能會在美國西部 (奧勒岡) 區域中看到部分已完成交易。當變更已在來源區域遞交後,這些變更才會複寫至其他區域。
注意
在某些情況下,您可能需要請求提高配額限制 AWS 支援。如果您符合下列任何條件,請參閱 https://aws.amazon.com/support
-
如果您要為設定為使用超過 40,000 個寫入容量單位 (WCU) 的資料表新增複本,您必須為新增複本配額請求增加服務WCU配額。
-
如果您要將一個複本或多個複本在 24 小時內新增到一個目標區域且合計大於 10TB,則必須針對您的新增複本資料回填配額請求新增服務配額。
-
如果您遇到類似下列的錯誤:
-
無法在 'example_table_A' 區域中建立資料表 'example_table' 的複本,因為超過 'example_region_B' 區域中目前帳戶的限制。
-
次要索引
每份資料表的次要索引
您可以定義 5 個本機次要索引的上限。
每個資料表有 20 個全域次要索引的預設配額。您可以使用 Service Quotas 主控台
每個 UpdateTable
操作只能建立或刪除一個全域次要索引。
每份資料表的預估次要索引屬性
您最多可以投影 100 個屬性到資料表所有的區域和全域次要索引。這只適用於使用者指定的投影屬性。
在 CreateTable
操作中,如果您指定 INCLUDE
的 ProjectionType
,則 NonKeyAttributes
中指定的屬性總數,即所有次要索引總數,絕對不能超過 100。如果您將相同的屬性名稱投影到兩個不同的索引,在判斷總數時,這會計算為兩個不同的屬性。
這項限制不適用於含 KEYS_ONLY
或 ALL
的 ProjectionType
的次要索引。
分割區索引鍵和排序索引鍵
分割區索引鍵長度
分割區索引鍵值的長度下限為 1 個位元組。長度上限為 2048 個位元組。
分割區索引鍵值
資料表或次要索引中,不同的分割區索引鍵值數目沒有實際限制。
排序索引鍵長度
排序索引鍵值的長度下限為 1 個位元組。長度上限為 1024 個位元組。
排序索引鍵值
一般而言,每個分割區索引鍵值的相異排序索引鍵值數目沒有實際限制。
例外狀況是有次要索引的資料表。項目集合是具有相同分割區索引鍵屬性值的一組項目。在全域次要索引中,項目集合與基底資料表相互獨立 (而且可以具有不同的分割區索引鍵屬性),但在本機次要索引中,索引檢視會與資料表中的項目共同存在於相同的分割區中,並共用相同的分割區索引鍵屬性。由於此地區性,當資料表具有一或多個 時LSIs,項目集合無法分散到多個分割區。
對於具有一或多個 的資料表LSIs,項目集合的大小不得超過 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 的限制。
字串是 Unicode 搭配 UTF-8 二進位編碼。由於 UTF-8 是變數寬度編碼,DynamoDB 會使用其 UTF-8 位元組來決定字串的長度。
Number
數字的精準度最多可達 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:
-
資料表的項目資料大小。
-
本機次要索引中對應項目 (包括其索引鍵值及投影屬性) 的大小。
Attributes
每個項目的屬性名稱/值對
每個項目的屬性累積大小必須符合 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。例如, UpdateExpressionSET a = :val1 + :val2 + :val3
包含兩個「+
」運算子。
IN
比較子的運算元數目上限為 100。
保留字
DynamoDB 不會阻止您使用與保留字衝突的名稱。(如需完整清單,請參閱「DynamoDB 中的保留字」。)
但如果您在表達式參數中使用了保留字,您必須也要指定 ExpressionAttributeNames
。如需詳細資訊,請參閱 DynamoDB 中的表達式屬性名稱 (別名)。
DynamoDB 交易
DynamoDB 交易API操作有下列限制條件:
-
一個交易不能包含超過 100 個不同的動作。
-
一個交易不能包含超過 4 MB 的資料。
-
交易中的任何兩個動作皆無法對相同資料表中的相同項目進行操作。例如,您不能在一個交易中,對相同項目同時進行
ConditionCheck
與Update
。 -
交易無法在多個 AWS 帳戶或區域中的資料表上操作。
-
交易操作提供原子性、一致性、隔離和耐久性 (ACID) 保證,僅在最初進行寫入的 AWS 區域中。全域資料表不支援跨區域交易。舉例來說,假設您在美國東部 (俄亥俄) 與美國西部 (奧勒岡) 區域中有具有複本的全域資料表,並且在美國東部 (維吉尼亞北部) 區域中執行
TransactWriteItems
操作。這麼做會使變更受到複寫,所以您可能會在美國西部 (奧勒岡) 區域中看到部分已完成交易。當變更已在來源區域遞交後,這些變更才會複寫至其他區域。
DynamoDB Streams
DynamoDB Streams 中的碎片同時讀取
對於不是全域資料表的單一區域資料表,您最多可以設計兩個程序,以便同時讀取同一個 DynamoDB Streams 碎片。超過此限制會導致請求調節。對於全域資料表,我們建議您將同時讀取的數量限制為一個,以避免請求調節。
啟用 DynamoDB Streams 之資料表的寫入容量上限
AWS 在啟用 DynamoDB Streams 的 DynamoDB 資料表寫入容量上放置一些預設配額。這些預設配額僅適用於佈建讀/寫容量模式下的資料表。以下是預設情況下適用於您帳戶的輸送量配額。
-
美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (加利佛尼亞北部)、美國西部 (奧勒岡)、南美洲 (聖保羅)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、亞太區域 (東京)、亞太區域 (首爾)、亞太區域 (新加坡)、亞太區域 (雪梨)、中國 (北京) 區域:
-
每份資料表:40,000 個寫入容量單位
-
-
所有其他區域:
-
每份資料表:10,000 個寫入容量單位
-
您可以使用 Service Quotas 主控台
注意
佈建輸送量配額也適用於已啟用 DynamoDB Streams 的 DynamoDB 資料表。當您請求增加已啟用 Streams 的資料表的寫入容量配額時,請確保也請求增加此資料表已佈建的輸送容量。如需詳細資訊,請參閱輸送量預設配額。在處理較高輸送量的 DynamoDB Streams 時,也適用其他配額。如需詳細資訊,請參閱 Amazon DynamoDB Streams API參考指南。
DynamoDB Accelerator (DAX)
AWS 區域可用性
如需DAX可用 AWS 區域的清單,請參閱 中的 DynamoDB Accelerator (DAX)AWS 一般參考。
節點
DAX 叢集僅包含一個主要節點,以及介於零到十個僅供讀取複本節點之間。
單一 AWS 區域中的節點總數 (每個 AWS 帳戶) 不得超過 50 個。
參數群組
每個區域最多可以建立 20 個 DAX 參數群組。
子網路群組
每個區域最多可以建立 50 個 DAX 子網路群組。
您可在子網路群組內定義最多 20 個子網路。
重要
DAX 叢集最多支援 500 個 DynamoDB 資料表。一旦超過 500 個 DynamoDB 資料表,您的叢集在可用性和效能方面可能會降低。
API特定限制
CreateTable
/UpdateTable
/DeleteTable
/PutResourcePolicy
/DeleteResourcePolicy
-
一般而言,您最多可以有 500 個 CreateTable、PutResourcePolicy、、 UpdateTable DeleteTable和 DeleteResourcePolicy請求以任何組合同時執行。換言之,
CREATING
、UPDATING
或DELETING
狀態的資料表總數不能超過 500。您每秒最多可以提交 2,500 個請求,以控制一組資料表中的可變 (
CreateTable
、PutResourcePolicy
、、DeleteTable
UpdateTable
和DeleteResourcePolicy
) 平面API請求。不過,PutResourcePolicy
和DeleteResourcePolicy
請求的個別限制較低。如需詳細資訊,請參閱下列PutResourcePolicy
和 的配額詳細資訊DeleteResourcePolicy
。CreateTable
包含資源型政策的 和PutResourcePolicy
請求,將計為每個 KB 政策的兩個額外請求。例如,大小為 5 KB 的CreateTable
或PutResourcePolicy
請求將計為 11 個請求。CreateTable
請求 1 個,資源型政策 10 個 (2 x 5 KB)。同樣地,大小為 20 KB 的政策將計為 41 個請求。請求 1 個,資源型政策CreateTable
40 個 (2 x 20 KB)。PutResourcePolicy
-
您可以在一組資料表中每秒提交最多 25 個
PutResourcePolicy
API請求。在個別資料表的成功請求之後,在接下來的 15 秒內不支援新的PutResourcePolicy
請求。資源型政策文件支援的大小上限為 20 KB。DynamoDB 會在根據此限制計算政策大小時計算空格。
DeleteResourcePolicy
-
您每秒最多可以在一組資料表中提交 50 個
DeleteResourcePolicy
API請求。在個別資料表的成功PutResourcePolicy
請求之後,在接下來的 15 秒內不支援任何DeleteResourcePolicy
請求。
BatchGetItem
-
單一
BatchGetItem
操作最多可擷取 100 個項目。所有擷取項目大小總計不能超過 16 MB。
BatchWriteItem
-
單一
BatchWriteItem
操作最多可以包含 25 個PutItem
或DeleteItem
請求。所有寫入項目大小總計不能超過 16 MB。
DescribeStream
-
您可以每秒 10 次
DescribeStream
的最大通話速率。
DescribeTableReplicaAutoScaling
-
DescribeTableReplicaAutoScaling
方式僅支援每秒 10 個請求。
DescribeLimits
-
DescribeLimits
應只能定期呼叫。如果每分鐘呼叫一次以上,您應該會收到調節錯誤。
DescribeContributorInsights
/ListContributorInsights
/UpdateContributorInsights
-
DescribeContributorInsights
、ListContributorInsights
和UpdateContributorInsights
應只能定期呼叫。DynamoDB 支援每個 每秒最多五個請求APIs。
DescribeTable
/ListTables
/GetResourcePolicy
-
每秒最多可以提交 2,500 個請求,其中包含唯讀 (
ListTables
、DescribeTable
和GetResourcePolicy
) 控制平面API請求。GetResourcePolicy
API 具有每秒 100 個請求的較低個別限制。
Query
-
Query
的結果集受到每次呼叫為 1 MB 的限制。您可以使用查詢回應的LastEvaluatedKey
擷取更多結果。
Scan
-
Scan
的結果集受到每次呼叫為 1 MB 的限制。您可以使用掃描回應的LastEvaluatedKey
擷取更多結果。
UpdateKinesisStreamingDestination
-
執行
UpdateKinesisStreamingDestination
操作時,您可以將ApproximateCreationDateTimePrecision
設定為新值,在 24 小時內最多 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
資料表匯出至 Amazon S3
完整匯出:所有執行中的資料表可以匯出最多 300 個並行匯出任務,或匯出最多 100TB。匯出排入佇列之前,會檢查這兩項限制。
增量匯出:在最短 15 分鐘、最長 24 小時的匯出時段內,可同時匯出最多 300 個並行任務,或 100TB 的資料表大小。
備份和還原
透過 DynamoDB 隨需備份進行還原時,您最多可以同時執行 50 項共計 50TB 的還原工作。透過 還原時 AWS Backup,您最多可以執行 50 個並行還原,總計為 25TB。如需備份的詳細資訊,請參閱DynamoDB 的備份和還原。