Azure 和 DB 中的Cosmos單位

適用于 :SQL API Cassandra API Gremlin API Table API Azure Cosmos DB API for MongoDB

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

所有資料庫作業的成本會由 Azure Cosmos DB 正規化, (要求單位或 RUs 表示,) 。 要求單位是一種執行 Azure Cosmos DB 支援之資料庫作業所需的系統資源 ,例如 CPU、IOPS 和記憶體的Cosmos貨幣。

執行點讀取 (即以識別碼和分區鍵值) 為 1 KB 專案來抓取單一專案的成本為 1 個要求單位 (或 1 RU) 。 所有其他資料庫作業也同樣會使用 RUs 指派成本。 無論您使用哪個 API 與 Azure Cosmos互動,成本一定都是以 RUs 來測量。 無論資料庫作業是寫入、點讀取或查詢,成本一直以 RUs 為單位。

下圖顯示 RUs 的高層概念:

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

若要管理和規劃容量,Azure Cosmos DB 可確保在給定資料集上執行給定資料庫作業的 RUs 數目是決定式。 您可以檢查回應標頭,以追蹤任何資料庫作業所耗用之 RUS 數目。 當您瞭解影響 RU 費用 的因素及應用程式的輸送量需求時,您可以經濟地執行您的應用程式。

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

  1. 已置備輸送量模式:在此模式中,您以每秒 100 個 RUs 的遞增量,以每秒為單位為您的應用程式佈建 RUs 數目。 若要縮放應用程式的已配置輸送量,您隨時都可以增加或減少 100 個 RUs 的 RUs 數量。 您可以以程式化方式或使用 Azure 入口網站進行變更。 系統每小時會針對您撥備的 RUs 量計費。 若要深入瞭解,請參閱已 配置輸送量一 文。

    您可以以兩種不同的細微性來配置輸送量:

    • 容器:詳細資訊,請參閱在Azure 或容器上Cosmos輸送量。
    • 資料庫:詳細資訊,請參閱在Azure資料庫上Cosmos輸送量。
  2. 無伺服器模式:在此模式中,在 Azure 帳戶建立資源時,不需要Cosmos輸送量。 在計費期間結束時,系統會針對資料庫作業所耗用的要求單位數量收費。 若要深入瞭解,請參閱無 伺服器輸送量一 文。

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

要求單位考慮

當您估計工作負載耗用的 RUS 數量時,請考慮下列因素:

  • 專案大小:隨著專案大小的增加,讀取或寫入專案的耗用 RUS 數量也會增加。

  • 專案索引:根據預設,每個專案都會自動編制索引。 如果您選擇不為容器中的一些專案編制索引,會耗用較少的 RUs。

  • 專案屬性計數:假設預設索引是在所有屬性上,當專案屬性計數增加時,用於撰寫專案的 RUS 數目會增加。

  • 索引屬性:每個容器的索引策略會決定預設會編制哪些屬性的索引。 若要減少寫入作業的 RU 耗用量,請限制索引屬性的數量。

  • 資料一致性:較之其他寬鬆一致性層級,強且有限制的過時一致性等級耗用大約兩倍于執行讀取作業的 RUs。

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

  • 查詢模式:查詢的複雜性會影響作業耗用多少 RUS。 影響查詢作業成本的因素包括:

    • 查詢結果數目
    • 謂詞數
    • 謂詞的性質
    • 使用者定義的函數數目
    • 來源資料的大小
    • 結果集的大小
    • 預測

    相同資料上的同一個查詢在重複執行時,一定會花費相同數量的 RUs。

  • 腳本使用量:與查詢一樣,儲存的程式和觸發程式會根據執行之作業的複雜性來耗用 RUs。 當您開發您的應用程式時,請檢查 要求費用標頭 ,以進一步瞭解每個作業耗用多少 RU 容量。

要求單位和多個區域

如果您在 Cosmos 容器 (或資料庫) 上配置'R' RUS,Cosmos DB 可確保每個與 Cosmos 帳戶相關聯的區域都提供'R' RUS。 您無法選擇性地將 RUs 指派給特定區域。 在容器或資料庫Cosmos上 (的 Rus) 會配置至所有與帳戶相關聯的Cosmos區域。

假設 Cosmos容器是使用"R" RUs所配置,而且有與 Cosmos 帳戶相關聯的'N'區域,則容器上的全域可用 RUs 總數 = R x N

您所選擇的 一致性模型 也會影響輸送量。 您可以獲得約 2 倍的讀取輸送量,以獲得較寬鬆一致性層級 (例如會話、一致首碼和最終一致性) ,而較強一致性等級 (例如,限制過期或強一致性) 。

下一個步驟