DynamoDB 佈建容量模式 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

DynamoDB 佈建容量模式

在 DynamoDB 中建立新的佈建資料表時,必須指定其佈建輸送容量。這代表資料表可支援的讀取與寫入輸送量。系統會依您佈建的每小時讀取與寫入容量收費,而非根據實際用量。

隨著應用程式的資料與存取需求變化,您可能需要調整資料表的輸送量設定。您可以使用自動擴展來自動調整資料表的佈建容量,以回應流量的變動。DynamoDB 自動擴展會使用 Application Auto Scaling 中的擴展政策。若要在 DynamoDB 中設定自動擴展,除了目標使用率百分比外,還需設定讀寫容量的最小與最大值。Application Auto Scaling 會建立和管理 CloudWatch 警示,當指標偏離目標就會觸發擴展事件,自動擴展會監控資料表活動,並依預設閾值自動調整容量設定。當耗用容量連續兩分鐘超過設定的目標使用率時,自動擴展即會觸發。CloudWatch 警示在觸發自動擴展前,可能會有短暫數分鐘的延遲。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量

如果使用了 DynamoDB Auto Scaling 功能,則會自動調整輸送量設定來回應實際工作負載。您也可使用 UpdateTable 操作,手動調整資料表的輸送容量。例如,若您需要將現有資料存放區中的資料大量匯入新的 DynamoDB 資料表,可以選擇這麼做。您可以建立具有大型寫入輸送量設定的資料表,然後在大量資料載入完成後減少此設定。

注意

根據預設,DynamoDB 會防止意外或失控的資源耗用。若要將帳戶中所有資料表的讀取與寫入輸送量上限擴展至超過 40,000,您可以申請增加該配額。超出預設資料表輸送量配額的請求將受到限流。如需詳細資訊,請參閱輸送量預設配額

您可在 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 管理主控台 建立資料表或全域次要索引,預設會啟用 DynamoDB 自動擴展。

您可以隨時使用 主控台、 AWS CLI或其中一個 AWS SDKs 來管理自動擴展設定。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量

使用率

使用率可協助您判斷是否超過佈建容量;若是,應降低資料表容量以節省成本。相反地,使用率也可協助您判斷是否存在佈建容量不足的情況。在此情況下,您應提高資料表容量,以防止在突發高流量期間出現請求限流的情況。如需詳細資訊,請參閱 Amazon DynamoDB 自動擴展:在任何規模下的效能與成本最佳化

若您使用 DynamoDB 自動擴展功能,則也必須設定目標使用率百分比。自動擴展會依據此百分比作為目標,向上或向下調整容量。建議將目標使用率設定為 70%。如需詳細資訊,請參閱使用 DynamoDB Auto Scaling 功能自動管理輸送容量