Azure Cosmos DB 中的要求單位

適用於: SQL API Cassandra API Gremlin API 資料表 API 適用於 MongoDB 的 Azure Cosmos DB API

Azure Cosmos DB 支援許多 API,例如 SQL、MongoDB、Cassandra、Gremlin 和資料表。 每個 API 都有它自己的一組資料庫作業。 這些作業的範圍可從簡單的點讀取和寫入到複雜查詢。 每個資料庫作業都會根據作業的複雜度來取用系統資源。

所有資料庫作業的成本會由 Azure Cosmos DB 進行正規化,並以要求單位 (簡稱 RU) 表示。 要求單位是一種效能貨幣,其會將執行 Azure Cosmos DB 所支援之資料庫作業所需的系統資源 (例如 CPU、IOPS 和記憶體) 抽象化。

對 1 KB 項目進行點讀取 (依識別碼和分割區索引鍵值擷取單一項目) 的成本是 1 個要求單位 (簡稱 1 RU)。 所有其他資料庫作業同樣會使用 RU 來指派成本。 無論您使用哪種 API 與 Azure Cosmos 容器互動,成本始終由 RU 測量。 無論資料庫作業是寫入、點讀取還是查詢,成本一律以 RU 為單位進行測量。

下圖顯示 RU 的高階概念:

資料庫作業會取用要求單位

為了管理和規劃容量,Azure Cosmos DB 會確保指定資料集上指定資料庫作業的 RU 數目具有決定性。 您可以檢查回應標頭來追蹤任何資料庫作業所取用的 RU 數目。 當您了解影響 RU 費用的因素,以及應用程式的輸送量需求之後,就可以最符合成本效益的方式執行應用程式。

您所使用的 Azure Cosmos 帳戶類型會決定所使用 RU 的收費方式。 您可以在 3 種模式下建立帳戶:

  1. 佈建的輸送量模式:在此模式下,您會以秒為單位,以每秒遞增 100 個 RU 的方式來佈建應用程式的 RU 數目。 若要調整應用程式的佈建輸送量,您可以透過遞增或遞減 100 個 RU 的調整方式,隨時增加或減少 RU 數目。 您可藉由程式設計方式或使用 Azure 入口網站來進行變更。 系統會針對每秒佈建的 RU 數目,以每小時為單位向您計費。 若要深入了解,請參閱佈建的輸送量一文。

    您可以在兩個不同的資料粒度上佈建輸送量:

  2. 無伺服器模式:在此模式下,您不需要在 Azure Cosmos 帳戶中建立資源時,佈建任何輸送量。 在計費週期結束時,將會針對您的資料庫作業所取用的要求單位數目進行計費。 若要深入了解,請參閱無伺服器輸送量一文。

  3. 自動調整模式:在此模式下,您可以根據使用量,自動且立即調整資料庫或容器的輸送量 (RU/秒),而不會影響工作負載的可用性、延遲、輸送量或效能。 此模式非常適合有變動或無法預測的流量模式,而且需要高效能和規模 SLA 的任務關鍵性工作負載。 若要深入了解,請參閱自動調整輸送量一文。

要求單位的考量

當您估計工作負載所取用的 RU 數目時,請考慮下列因素:

  • 項目大小:當項目大小增加時,讀取或寫入項目所耗用的 RU 數目也會增加。

  • 編製項目索引:根據預設,每個項目的索引會自動編製。 如果您選擇不要編製容器中部分項目的索引,則會耗用較少的 RU。

  • 項目屬性計數:假設所有屬性上都有預設編製索引,則取用來寫入項目的 RU 數目會隨著項目屬性計數增加而增加。

  • 已編製索引的屬性:每個容器上之索引原則會判定預設要編製哪些索引的屬性。 若要減少寫入作業的 RU 耗用量,請限制已編製索引的屬性數目。

  • 資料一致性:相較於其他寬鬆一致性層級的讀取作業,強式和限定過期一致性層級在執行讀取作業時所取用的 RU 數目大約是兩倍以上。

  • 讀取的類型:點讀取的 RU 成本明顯低於查詢。

  • 查詢模式:查詢的複雜性會影響針對作業所耗用的要求單位數目。 影響查詢作業成本的因素包括:

    • 查詢結果數目
    • 述詞數目
    • 述詞性質
    • 使用者定義函式數目
    • 來源資料的大小
    • 結果集的大小
    • 投影

    相同資料上相同查詢的成本,一律會與重複執行的 RU 數目相同。

  • 指令碼使用方式:和查詢一樣,預存程序和觸發程序都會根據所執行作業的複雜度來取用 RU。 開發應用程式時,請檢查要求費用標頭,以便進一步了解每個作業要取用多少 RU 容量。

要求單位和多個區域

如果您在 Cosmos 容器 (或資料庫) 上佈建 'R' 個 RU,Cosmos DB 可確保在與您 Cosmos 帳戶相關聯的每個區域中都有 'R' 個 RU 可供使用。 您無法選擇性地將 RU 指派給特定區域。 在 Cosmos 容器 (或資料庫) 上佈建的 RU 會在與您 Cosmos 帳戶相關聯的所有區域中進行佈建。

假設 Cosmos 容器設定為 'R' 個 RU,而且有 'N' 個區域與 Cosmos 帳戶相關聯,則在容器上全域可用的 RU 總數 = R x N

您選擇的一致性模型也會影響輸送量。 相較於較強的一致性層級 (限定過期或強式一致性),您可以針對較寬鬆的一致性層級 (工作階段、一致前置詞和最終一致性),取得大約 2 倍的讀取輸送量。

後續步驟