Azure Cosmos DB 中的要求單位
適用於:NoSQL MongoDB Cassandra Gremlin 桌子
Azure Cosmos DB 支援許多 API,例如 SQL、MongoDB、Cassandra、Gremlin 和資料表。 每個 API 都有它自己的一組資料庫作業。 這些作業的範圍可從簡單的點讀取和寫入到複雜查詢。 每個資料庫作業都會根據作業的複雜度來取用系統資源。
Azure Cosmos DB 會使用要求單位 (或 RU,簡稱為 RU) 將所有資料庫作業的成本標準化,並根據輸送量來測量成本 (每秒要求單位,RU/秒)。
要求單位是一種效能貨幣,其會將執行 Azure Cosmos DB 所支援之資料庫作業所需的系統資源 (例如 CPU、IOPS 和記憶體) 抽象化。 無論資料庫作業是寫入、點讀取還是查詢,作業一律以 RU 為單位。 例如,無論使用哪個 API 與 Azure Cosmos DB 容器互動,1 KB 項目的點讀取 (透過其 ID 和分割區金鑰值取得單一項目) 都是要求單元(或 1 個 RU)。 您可以使用 Azure Cosmos DB 容量計算機來建立輸送量成本的模型。
下圖顯示 RU 的高階概念:
為了管理和規劃容量,Azure Cosmos DB 會確保指定資料集上指定資料庫作業的 RU 數目具有決定性。 您可以檢查回應標頭來追蹤任何資料庫作業所取用的 RU 數目。 當您了解影響 RU 費用的因素,以及應用程式的輸送量需求之後,就可以最符合成本效益的方式執行應用程式。
您所使用的 Azure Cosmos DB 帳戶類型會決定所使用 RU 的收費方式。 您可以在 3 種模式下建立帳戶:
佈建輸送量模式:在此模式中,您會以秒為單位,以每秒遞增 100 個 RU 的方式來佈建應用程式的 RU 數目。 若要調整應用程式的佈建輸送量,您可以透過遞增或遞減 100 個 RU 的調整方式,隨時增加或減少 RU 數目。 您可藉由程式設計方式或使用 Azure 入口網站來進行變更。 系統會針對每秒佈建的 RU 數目,以每小時為單位向您計費。 若要深入了解,請參閱佈建的輸送量一文。
可按兩種不同的資料細微性指派輸送量:
- 容器:如需詳細資訊,請參閱將輸送量指派給 Azure Cosmos DB 容器。
- 資料庫:如需詳細資訊,請參閱將輸送量指派給 Azure Cosmos DB 資料庫。
無伺服器模式:在此模式下,您不需要在 Azure Cosmos DB 帳戶中建立資源時,指派任何輸送量。 在計費週期結束時,需根據資料庫作業所使用的要求單位數支付費用。 若要深入了解,請參閱無伺服器輸送量一文。
自動調整模式:在此模式中,您可以根據資料庫或容器的使用量,自動即時調整資料庫或容器的輸送量 (RU/秒)。 此縮放作業不會影響工作負載的可用性、延遲、輸送量或效能。 此模式非常適合有變動或無法預測的流量模式,而且需要高效能和規模 SLA 的任務關鍵性工作負載。 若要深入了解,請參閱自動調整輸送量一文。
要求單位的考量
當您估計工作負載所取用的 RU 數目時,請考慮下列因素:
項目大小:當項目的大小增加時,取用來讀取或寫入該項目的 RU 數目也會增加。
編製項目索引:根據預設,每個項目的索引會自動編製。 如果您選擇不要編製容器中部分項目的索引,則會耗用較少的 RU。
項目屬性計數:假設預設會在所有屬性上編製索引,則取用來寫入項目的 RU 數目會隨著項目屬性計數增加而增加。
已編製索引的屬性:每個容器上的索引原則都會判斷預設要編製哪些屬性的索引。 若要減少寫入作業的 RU 耗用量,請限制已編製索引的屬性數目。
資料一致性:相較於其他寬鬆一致性層級的讀取作業,強式和限定過期一致性層級在執行讀取作業時所取用的 RU 數目大約是兩倍以上。
讀取的類型:點讀取的 RU 成本低於查詢。
查詢模式:查詢的複雜度會影響針對作業所取用的 RU 數目。 影響查詢作業成本的因素包括:
- 查詢結果數目
- 述詞數目
- 述詞性質
- 使用者定義函式數目
- 來源資料的大小
- 結果集的大小
- 投影
相同資料上相同查詢的成本,一律會與重複執行的 RU 數目相同。
指令碼使用方式:和查詢一樣,預存程序和觸發程序都會根據所執行作業的複雜度來取用 RU。 開發應用程式時,請檢查要求費用標頭,以便進一步了解每個作業要取用多少 RU 容量。
要求單位和多個區域
如果您在 Azure Cosmos 容器 (或資料庫) 上指派 'R' 個 RU,Azure Cosmos DB 可確保在與您帳戶建立關聯的每個區域中都有 'R' 個 RU 可供使用。 您無法選擇性地將 RU 指派給特定區域。 在 Azure Cosmos DB 容器 (或資料庫) 上佈建的 RU 會在與您 Azure Cosmos DB 帳戶相關聯的所有區域中進行佈建。
假設 Azure Cosmos DB 容器設定為 'R' 個 RU,而且有 'N' 個區域與 Azure Cosmos DB 帳戶相關聯,則在容器上全域可用的 RU 總數 = R x N。
您選擇的一致性模型也會影響輸送量。 相較於較強的一致性層級 (限定過期或強式一致性),您可以針對較寬鬆的一致性層級 (工作階段、一致前置詞和最終一致性),取得大約 2 倍的讀取輸送量。