本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當您在 DynamoDB 中建立新的佈建資料表時,您必須指定其佈建的輸送量容量。這是資料表可支援的讀取和寫入輸送量量。會根據您佈建的每小時讀取和寫入容量收費,而不是實際使用的佈建容量。
隨著應用程式的資料和存取需求變更,您可能需要調整資料表的輸送量設定。您可以使用自動調整規模來自動調整資料表的佈建容量,以回應流量的變動。DynamoDB 自動擴展使用 Application Auto Scaling 中的擴展政策。若要在 DynamoDB 中設定自動擴展,除了目標使用率百分比之外,您還可以設定讀取和寫入容量的最小和最大層級。Application Auto Scaling 會建立和管理 CloudWatch 警示,當指標偏離目標就會觸發擴展事件,Auto Scaling 會監控資料表的活動,並根據預先設定的閾值來調整其容量設定。當您的耗用容量連續兩分鐘違反設定的目標使用率時,自動擴展會觸發 。CloudWatch 警示在觸發自動擴展之前,可能會有最多幾分鐘的短暫延遲。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量。
如果使用了 DynamoDB Auto Scaling 功能,則會自動調整輸送量設定來回應實際工作負載。您也可以使用 UpdateTable 操作來手動調整資料表的輸送量容量。例如,如果您需要將現有資料存放區中的資料大量載入新的 DynamoDB 資料表,您可以決定這麼做。您可以建立具有大型寫入輸送設定的資料表,然後在大量資料載入完成後減少此設定。
您可以隨時將資料表從隨需模式切換到佈建容量模式。當您在容量模式之間進行多次切換時,適用下列條件:
-
您可以隨時將新建立的隨需模式資料表切換為佈建容量模式。不過,您只能在資料表建立時間戳記的 24 小時後將其切換回隨需模式。
-
您可以隨時將隨需模式中的現有資料表切換為佈建容量模式。不過,您只能在最後一個時間戳記後 24 小時將其切換回隨需模式,以指示切換到隨需模式。
如需在讀取和寫入容量模式之間切換的詳細資訊,請參閱在 DynamoDB 中切換容量模式時的考量。
讀取容量單位和寫入容量單位
對於佈建模式資料表,您可以指定容量單位的輸送量需求。這些單位代表應用程式每秒需要讀取或寫入的資料量。您稍後可以視需要修改這些設定,或讓 DynamoDB Auto Scaling 功能自動進行修改。
對於高達 4 KB 的項目,一個讀取容量單位 (RCU) 代表每秒一個強烈一致讀取操作,或每秒兩個最終一致讀取操作。如需 DynamoDB 讀取一致性模型的詳細資訊,請參閱DynamoDB 讀取一致性。
寫入容量單位 (WCU) 代表最高 1 KB 的項目每秒寫入一次。如需不同讀取和寫入操作的詳細資訊,請參閱DynamoDB 讀取和寫入操作。
選擇初始輸送量設定
每個應用程式在讀取和寫入資料庫時都有不同的需求。當您判斷 DynamoDB 資料表的初始輸送量設定時,請考慮下列事項:
-
預期的讀取和寫入請求率 — 您應該估計每秒需要執行的讀取和寫入次數。
-
項目大小 — 有些項目夠小,可以使用單一容量單位讀取或寫入。較大的項目需要多個容量單位。透過估算資料表中項目的平均大小,您可以為資料表的佈建輸送量指定準確的設定。
-
讀取一致性要求 — 讀取容量單位是以強式一致讀取操作為基礎,其消耗資料庫資源的兩倍,最終一致讀取數量。您應該判斷應用程式需要強烈一致讀取,還是可以放寬這項需求並改為執行最終一致讀取 根據預設,DynamoDB 中的讀取操作最終一致。如有必要,您可以請求這些操作的強烈一致讀取。
例如,假設您想要從資料表讀取每秒 80 個項目。這些項目的大小為 3 KB,而且您想要強烈一致的讀取。在此情況下,每個讀取都需要一個佈建的讀取容量單位。若要判斷此數字,請將操作的項目大小除以 4 KB。然後,四捨五入到最接近的整數,如下列範例所示:
-
3 KB / 4 KB = 0.75 或 1 個讀取容量單位
因此,若要從資料表讀取每秒 80 個項目,請將資料表的佈建讀取輸送量設定為 80 個讀取容量單位,如下列範例所示:
-
每個項目 1 個讀取容量單位 × 每秒 80 個讀取 = 80 個讀取容量單位
現在假設您想要每秒將 100 個項目寫入資料表,且每個項目的大小為 512 個位元組。在這種情況下,每個寫入都需要一個佈建的寫入容量單位。若要判斷此數字,請將操作的項目大小除以 1 KB。然後,四捨五入到最接近的整數,如下列範例所示:
-
512 位元組/1 KB = 0.5 或 1 個寫入容量單位
若要將每秒 100 個項目寫入資料表,請將資料表的佈建寫入輸送量設定為 100 個寫入容量單位:
-
每個項目 1 個寫入容量單位 × 每秒 100 個寫入 = 100 個寫入容量單位
DynamoDB 自動擴展
DynamoDB 自動擴展會主動管理資料表和全域次要索引的佈建輸送量容量。透過自動調整規模,您可以定義讀取與寫入容量單位的範圍 (上限與下限)。您也可以定義該範圍內的目標使用率百分比。DynamoDB Auto Scaling 功能會嘗試維持您的目標使用率,即使您的應用程式工作負載有所增減。
透過 DynamoDB Auto Scaling,資料表或全域次要索引可增加其佈建的讀取與寫入容量,來處理突然增加的流量,而不需要進行請求調節。當工作負載降低時,DynamoDB Auto Scaling 可降低輸送量,讓您無須支付未使用的佈建容量。
注意
如果您使用 AWS Management Console 建立資料表或全域次要索引,預設會啟用 DynamoDB 自動擴展。
您可以隨時使用 主控台、 AWS CLI或其中一個 AWS SDKs 來管理自動擴展設定。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量。
使用率
使用率可協助您判斷是否超過佈建容量,在這種情況下,應降低資料表容量以節省成本。相反地,它也可以協助您判斷是否不足佈建容量。在這種情況下,您應該增加資料表容量,以防止在意外的高流量執行個體期間,請求可能限流。如需詳細資訊,請參閱 Amazon DynamoDB 自動擴展:任何規模的效能和成本最佳化
如果您使用的是 DynamoDB 自動擴展,您也需要設定目標使用率百分比。自動擴展會使用此百分比做為目標,以向上或向下調整容量。我們建議將目標使用率設定為 70%。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量。