

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

# Amazon DocumentDB 彈性叢集最佳實務
<a name="elastic-best-practices"></a>

了解使用 Amazon DocumentDB 彈性叢集的最佳實務。[執行個體型 Amazon DocumentDB 叢集的所有最佳實務](https://docs.aws.amazon.com/documentdb/latest/developerguide/best_practices.html)也適用於彈性叢集。在新最佳實務確定時，會不斷更新此小節。

**Topics**
+ [選擇碎片索引鍵](#choosing-shard-keys)
+ [連線管理](#connection-management)
+ [未碎片集合](#unsharded-collections)
+ [擴展彈性叢集](#scaling)
+ [監控彈性叢集](#monitoring-elastic-clusters)

## 選擇碎片索引鍵
<a name="choosing-shard-keys"></a>

下列清單說明建立碎片金鑰的指導方針。
+ 使用平均分佈的雜湊金鑰，將資料分散到叢集中的所有碎片 （避免使用熱鍵）。
+ 在所有read/update/delete請求中使用您的碎片金鑰，以避免散射收集查詢。
+ 執行read/update/delete操作時，請避免巢狀碎片金鑰。
+ 進行批次操作時，請將 `ordered`設定為 false，以便所有碎片可以平行執行並提高延遲。

## 連線管理
<a name="connection-management"></a>

下列清單說明管理資料庫連線的指導方針。
+ 監控您的連線計數，以及新連線開啟的頻率。
+ 將連線分散到應用程式組態中的所有子網路。如果您的叢集是在多個子網路中設定，但您只利用一部分子網路，則您的最大連線可能會遇到瓶頸。

## 未碎片集合
<a name="unsharded-collections"></a>

以下說明未碎片集合的指導方針。
+ 使用未碎片集合時，若要分配負載，請嘗試在不同資料庫上保留高度使用的未碎片集合。Amazon DocumentDB 彈性叢集會將資料庫放在不同的碎片上，並共同將相同資料庫的未碎片集合放置在相同的碎片上。

## 擴展彈性叢集
<a name="scaling"></a>

下列清單說明擴展彈性叢集的指導方針。
+ 擴展操作可能會導致短暫的間歇性資料庫和網路錯誤。可能的話，請避免在尖峰時段進行擴展。嘗試在維護時段期間擴展。
+ 增加和減少碎片容量 （變更每個碎片的 vCPU 計數） 以增加運算比增加或減少碎片計數更為優先，因為它速度更快，並且具有較短的間歇性資料庫和網路錯誤持續時間。
+ 預測增長時，最好增加碎片計數，而不是擴展碎片容量。這可讓您透過增加需要快速擴展的案例的碎片容量來擴展叢集。
+ 監控您的用戶端重試政策，並使用指數退避和抖動重試，以避免在擴展時發生錯誤時使資料庫超載。

## 監控彈性叢集
<a name="monitoring-elastic-clusters"></a>

下列清單說明監控彈性叢集的指導方針。
+ 追蹤每個碎片指標的peak-to-average比率，以判斷您是否正在驅動不均勻的流量 （具有熱鍵/熱點）。追蹤peak-to-average比率的關鍵指標為：
  + `PrimaryInstanceCPUUtilization`
    + 這可以在每個碎片層級進行監控。
    + 在叢集層級，您可以監控 p99 偏移的平均數。
  + `PrimaryInstanceFreeableMemory`
    + 這可以在每個碎片層級進行監控。
    + 在叢集層級，您可以監控 p99 偏移的平均數。
  + `DatabaseCursorsMax`
    + 這應該在每個碎片層級進行監控，以判斷扭曲。
  + `Documents-Inserted/Updated/Returned/Deleted`
    + 這應該在每個碎片層級進行監控，以判斷扭曲。