

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

# DynamoDB 佈建容量模式
<a name="provisioned-capacity-mode"></a>

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

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

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

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

您可在 24 小時滾動期間內，最多將資料表從佈建容量模式切換至隨需模式四次。您可隨時將資料表從隨需模式切換回佈建容量模式。

如需了解如何在讀取與寫入容量模式間切換，請參閱 [切換 DynamoDB 容量模式時的注意事項](bp-switching-capacity-modes.md)。

**Topics**
+ [讀取容量單位和寫入容量單位](#read-write-capacity-units)
+ [選擇初始輸送量設定](#choosing-initial-throughput)
+ [DynamoDB 自動擴展](#ddb-autoscaling)
+ [使用 DynamoDB Auto Scaling 功能自動管理輸送容量](AutoScaling.md)
+ [DynamoDB 預留容量](reserved-capacity.md)

## 讀取容量單位和寫入容量單位
<a name="read-write-capacity-units"></a>

對於佈建模式資料表，您可依*容量單位*指定輸送量需求。這些單位代表應用程式每秒需讀取或寫入的資料量。您稍後可以視需要修改這些設定，或讓 DynamoDB Auto Scaling 功能自動進行修改。

對於大小上限為 4 KB 的項目，一個*讀取容量單位* (RCU) 代表每秒一次高度一致性讀取，或每秒兩次最終一致讀取。如需有關 DynamoDB 讀取一致性模式的詳細資訊，請參閱 [DynamoDB 讀取一致性](HowItWorks.ReadConsistency.md)。

一個*寫入容量單位* (WCU) 代表每秒可對大小上限為 1 KB 的項目執行一次寫入。如需了解不同讀取與寫入操作的詳細資訊，請參閱 [DynamoDB 讀取和寫入操作](read-write-operations.md)。

## 選擇初始輸送量設定
<a name="choosing-initial-throughput"></a>

每個應用程式在資料庫讀寫需求上各不相同。在決定 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 自動擴展
<a name="ddb-autoscaling"></a>

DynamoDB 自動擴展會主動管理資料表與全域次要索引的佈建輸送容量。透過自動擴展，您可以定義讀取與寫入容量單位的範圍 (上限與下限)。您也可以定義該範圍內的目標使用率百分比。DynamoDB Auto Scaling 功能會嘗試維持您的目標使用率，即使您的應用程式工作負載有所增減。

透過 DynamoDB Auto Scaling，資料表或全域次要索引可增加其佈建的讀取與寫入容量，來處理突然增加的流量，而不需要進行請求限流。當工作負載降低時，DynamoDB Auto Scaling 可降低輸送量，讓您無須支付未使用的佈建容量。

**注意**  
如果您使用 AWS 管理主控台 建立資料表或全域次要索引，預設會啟用 DynamoDB Auto Scaling。  
您可以隨時使用 主控台、 AWS CLI或其中一個 AWS SDKs 來管理自動擴展設定。如需詳細資訊，請參閱[使用 DynamoDB Auto Scaling 功能自動管理輸送容量](AutoScaling.md)。

### 使用率
<a name="ddb-autoscaling-utilization-rate"></a>

使用率可協助您判斷是否超過佈建容量；若是，應降低資料表容量以節省成本。相反地，使用率也可協助您判斷是否存在佈建容量不足的情況。在此情況下，您應提高資料表容量，以防止在突發高流量期間出現請求限流的情況。如需詳細資訊，請參閱 [Amazon DynamoDB 自動擴展：在任何規模下的效能與成本最佳化](https://aws.amazon.com/blogs/database/amazon-dynamodb-auto-scaling-performance-and-cost-optimization-at-any-scale/)。

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