關於 Azure Cosmos DB 中自動調整佈建輸送量的常見問題集

適用於:NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB 會使用自動調整佈建輸送量,以根據使用量自動管理及調整資料庫或容器的每秒要求單位 (RU/秒)。 本文會回答 Azure Cosmos DB 中有關自動調整的常見問題。

Azure Cosmos DB 中的自動調整和自動試驗之間有何差異?

自動調整自動調整佈建輸送量是 Azure Cosmos DB 功能的更新名稱,先前稱為自動試驗 (autopilot)。 在目前的自動調整版本中,我們已新增功能,包括設定自訂 RU/秒上限的程式設計支援和功能。

在先前的自動試驗階層模型中建立的資料庫或容器會發生什麼事?

使用先前階層模型建立的資源會自動支援新的自動調整自訂 RU/秒上限模型。 該階層上限會變成新的 RU/秒上限,而這會產生相同的調整範圍。

例如,如果您先前選取的階層可在 400 RU/秒到 4000 RU/秒之間調整,則資料庫或容器現在會顯示 RU/秒上限為 4000 RU/秒,可在 400 RU/秒到 4000 RU/秒之間調整。 然後,您可以根據您的工作負載,將 RU/秒上限變更為自訂值。

自動調整的進入點 RU/秒為何?

從 2022 年 4 月開始,您可以將自動調整的 RU/秒上限設定為最低 1,000 RU/秒 (可在 100 RU/秒到 1,000 RU/秒之間調整)。 您也可以將調整範圍設定為 200 RU/秒到 2,000 RU/秒,或是 300 RU/秒到 3,000 RU/秒。 先前的進入點為 400 RU/秒到 4000 RU/秒。

針對輸送量需求較低,但仍可能調整到 RU/秒上限的工作負載,我們建議使用此設定。

自動調整多快會根據流量增加而向上調整?

使用自動調整時,系統會根據傳入流量,在 0.1 × TmaxTmax 的範圍內,將輸送量 (RU/秒) 向上 (T) 或向下 (T) 調整。 因為縮放比例是自動且即時的,所以您可以隨時取用到佈建的最大值 Tmax,而不會發生延遲。

如何判斷系統目前調整的 RU/秒?

使用 Azure 監視器計量,可監視佈建的 RU/秒上限,和系統調整到的目前輸送量 (RU/秒)。

自動調整的定價為何?

每小時,系統會收取在該小時內調整到最高輸送量 T 的費用。 如果您的資源在一小時內沒有任何要求,或調整並未超過 0.1 × Tmax,則會向您收取最少 0.1 × Tmax 的費用。 如需詳細資訊,請參閱 Azure Cosmos DB 定價頁面

我的帳單上會如何顯示自動調整?

在單一寫入區域帳戶中,每 100 RU/秒的自動調整費率是標準 (手動) 佈建輸送量的 1.5 倍。 您的帳單會顯示現有標準佈建的輸送量計量。 此計量的數量乘以 1.5。 例如,如果系統在一小時內擴充到的最高 RU/秒是 6000 RU/秒,則對於該小時的計量,會向您收取 60 * 1.5 = 90 個單位的費用。

在多寫入區域的帳戶中,每 100 RU/秒的自動調整費率與標準 (手動) 佈建多重寫入區域輸送量相同。 您的帳單會顯示現有的多寫入區域計量。 由於費率相同,如果您使用自動調整,則會看到與標準輸送量相同的數量。

自動調整是否會使用保留容量?

是。 若單一寫入區域的帳戶具有保留容量時,自動調整資源的保留折扣會依照特定區域的比例乘以 1.5 來套用至您的計量使用量。 舉例而言,如果想要使用保留容量來涵蓋 10,000 自動調整 RU/秒,應當規劃購買共 15,000 RU/秒的保留容量。

多重寫入區域保留容量的運作方式與自動調整和標準 (手動) 佈建輸送量相同。 如需詳細資訊,請參閱 Azure Cosmos DB 保留容量

自動調整是否可與 Azure Cosmos DB 免費層搭配運作?

是。 在免費層中,您可以在資料庫或容器上使用自動調整輸送量。 深入了解免費層計費如何與自動調整搭配運作

所有 API 是否皆支援自動調整?

是。 所有 API 皆支援自動調整:NoSQL、Gremlin、資料表、Cassandra 及 MongoDB。

多重寫入區域帳戶是否支援自動調整?

是。 在新增至 Azure Cosmos DB 帳戶的每個區域中,都可以使用 RU/秒上限。

如何在新資料庫或容器上啟用自動調整?

如何在現有的資料庫或容器上啟用自動調整?

是。 您也可以在自動調整和標準 (手動) 佈建輸送量之間切換。 目前對於所有 API,您都可以使用 Azure 入口網站Azure CLIPowerShell 來執行這些作業。 依據設計,您無法使用 Azure Cosmos DB 用戶端 SDK 或 Azure Resource Manager 範本,在手動佈建輸送量和自動調整之間移轉。 不過,您可以使用用戶端 SDK 或 Azure Resource Manager 範本來建立新的自動調整資源,以及變更現有自動調整資源的 RU/秒上限。

如何在自動調整和標準 (手動) 佈建輸送量之間切換?

從概念上來說,變更輸送量類型是兩階段的程序。 首先,您會傳送要求,將輸送量設定變更為使用自動調整或手動佈建的輸送量。 在這兩種情況下,系統會根據目前的輸送量設定和儲存體,自動判斷並設定初始 RU/秒的值。 在此步驟中,不會接受使用者提供的 RU/秒值。 然後,更新完成後,您可以變更 RU/秒,以符合您的工作負載。

從標準 (手動) 佈建輸送量移轉至自動調整

針對容器,請使用下列公式來估計初始自動調整的 RU/秒上限:

MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10) 四捨五入至最接近的 1,000 RU/秒。

實際的初始自動調整 RU/秒上限可能會根據您的帳戶設定而有所不同。

範例 #1:假設您有一個容器,其中有 10,000 RU/秒的手動佈建輸送量,以及 25 GB 的儲存體。 當您啟用自動調整時,初始自動調整 RU/秒上限為 10,000 RU/秒,而您可以在 1,000 RU/秒到 10,000 RU/秒之間調整。

範例 #2:假設您有一個容器,其中有 50,000 RU/秒的手動佈建輸送量,以及 25,000 GB 的儲存體。 當您啟用自動調整時,初始自動調整 RU/秒上限為 250,000 RU/秒,而您可以在 25,000 RU/秒到 250,000 RU/秒之間調整。

從自動調整移轉至標準 (手動) 佈建輸送量

初始手動佈建的輸送量會等於目前自動調整的 RU/秒上限。

範例:您有一個自動調整資料庫或容器,其 RU/秒上限為 20,000 RU/秒 (可在 2,000 RU/秒到 20,000 RU/秒之間調整)。 當您更新為使用手動佈建的輸送量時,初始輸送量會是 20,000 RU/秒。

我可以使用 Azure CLI、PowerShell 或 Azure Resource Manager 來管理使用自動調整的資料庫或容器嗎?

是。 若要以程式設計方式在現有資料庫或容器上啟用自動調整,您可以使用 Azure CLIPowerShell

若要建立可使用自動調整的新資料庫或容器,您可以使用 Azure CLIPowerShellAzure Resource Manager 範本

共用的輸送量資料庫是否支援自動調整?

是。 若要在共用輸送量資料庫上啟用自動調整,當您建立資料庫時,請選取 [自動調整] 和 [佈建輸送量] 選項。

啟用自動調整時,每個共用輸送量資料庫允許多少容器?

Azure Cosmos DB 會在共用輸送量資料庫中強制執行最多 25 個容器。 此最大值適用於具有自動調整或標準 (手動) 輸送量的資料庫。

自動調整如何影響資料庫一致性層級?

自動調整不會影響資料庫的一致性層級。

如需詳細資訊,請參閱一致性層級

與每個 RU/秒上限選項相關聯的儲存體限制為何?

每個 RU/秒上限的儲存限制 (以 GB 為單位) 是資料庫或容器的 RU/秒上限除以 10。 例如,如果 RU/秒上限為 20,000 RU/秒,則資源可以支援 2,000 GB 的儲存空間。

如需可用的 RU/秒上限和儲存選項,請參閱佈建輸送量的自動調整限制

如果超過與我的最大輸送量相關聯的儲存體限制,會發生什麼事?

如果超過與資料庫或容器的最大輸送量相關聯的儲存體限制,Azure Cosmos DB 會自動將最大輸送量增加到可支援該儲存體層級的第二高 RU/秒。

例如,如果您從 50,000 RU/秒的 RU/秒上限開始 (在 5,000 RU/秒與 50,000 RU/秒之間調整),您最多可以儲存 5,000 GB 的資料。 如果您的儲存大小增加到 5,001 GB,儲存空間現在為 6,000 GB,而新的 RU/秒上限為 60,000 RU/秒 (可在 6,000 RU/秒到 60,000 RU/秒之間調整)。

我是否可以變更資料庫或容器上的 RU/秒上限?

是。 如需詳細資訊,請參閱如何佈建自動調整輸送量

當您變更 RU/秒上限時,視要求的值而定,非同步操作可能需要 4 到 6 小時才能完成。 深入了解

如何增加 RU/秒上限?

當您傳送要求以增加 RU/秒上限 Tmax 時,根據選取的 RU/秒上限而定,服務會佈建更多資源,以支援更高的 RU/秒上限。 發生這種情況時,您現有的工作負載和作業不會受影響。 系統會在先前的 0.1 × TmaxTmax 之間,繼續調整您的資料庫或容器,直到 0.1 × Tmax_newTmax_new 的新調整範圍準備就緒。

如何降低 RU/秒下限?

當您降低 RU/秒上限時,您可以為其設定的最小值為:MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10),四捨五入到最接近的 1000 RU/秒。

範例 #1:您有一個自動調整容器,其 RU/秒上限為 20,000 RU/秒 (可在 2,000 RU/秒到 20,000 RU/秒之間調整),而儲存大小為 1,500 GB。 您能為 RU/秒上限設定的最低下限值為:MAX(1,000, 20,000 / 10, 1,500 × 10) = 15,000 RU/秒 (可在 1,500 RU/秒到 15,000 RU/秒之間調整)。

範例 #2:您有一個自動調整容器,其 RU/秒上限為 100,000 RU/秒,而儲存大小為 100 GB。 現在,您將 RU/秒上限擴大到 150,000 RU/秒 (可在 15,000 RU/秒到 150,000 RU/秒之間調整)。 您現在能為 RU/秒上限設定的最低下限值為:MAX(1,000, 150,000 / 10, 100 × 10) = 15,000 RU/秒 (可在 1,500 RU/秒到 15,000 RU/秒之間調整)。

對於共用的輸送量資料庫,當您降低 RU/秒上限時,您可以設定的最小值為:MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10, 1,000 + (MAX(Container count - 25, 0) × 1,000)),四捨五入到最接近的 1,000 RU/秒。

這些公式和範例適用於您可以為自動調整 RU/秒上限設定的最小值。 其與系統自動調整的 0.1 × TmaxTmax 範圍不同。 不論 RU/秒上限為何,系統一律會在 0.1 × TmaxTmax 之間調整。

TTL 如何與自動調整搭配使用?

存留時間 (TTL) 作業不會影響自動調整中的 RU/秒調整。 由於 TTL 而耗用的任何 RU 不屬於自動調整容器 RU/秒的計費部分。

例如,針對範圍為 400 RU/秒到 4,000 RU/秒的自動調整容器:

  • 第 1 小時:T=0:容器沒有使用量 (無 TTL 或工作負載要求)。 可計費的 RU/秒為 400 RU/秒。
  • 第 1 小時:T=1:已啟用 TTL。
  • 第 1 小時:T=2:容器會開始取得要求。 要求會在 1 秒內取用 1,000 RU。 使用了價值 200 RU 的 TTL。 可計費的 RU/秒仍為 1,000 RU/秒。 無論 TTL 刪除在何時發生,都不會影響自動調整縮放比例的邏輯。

RU/秒上限如何對應至實體分割區?

當您第一次選取 RU/秒上限時,Azure Cosmos DB 會將 RU/秒上限除以 10,000 RU/秒來取得所需的實體分割區數目以進行佈建。 每個實體分割區最多可支援 10,000 RU/秒和 50 GB 的儲存體。 隨著儲存大小增加,Azure Cosmos DB 會自動將分割區分割,以新增更多實體分割區來處理增加的儲存大小。 如果儲存大小超過相關聯的限制,Azure Cosmos DB 會增加 RU/秒上限。

資料庫或容器的 RU/秒上限會平均分散到所有實體分割區。 任何單一實體分割區可調整的輸送量總計為資料庫或容器的 RU/秒上限除以實體分割區數目。

當傳入要求超過資料庫或容器的 RU/秒上限時,會發生什麼事?

如果整體耗用的 RU/秒超過資料庫或容器的 RU/秒上限,則超過 RU/秒上限的要求會受到節流,並傳回 429 狀態碼。 導致 100% 標準化使用率超過的要求會受到節流。 標準化使用率定義為所有實體分割區之間的 RU/秒使用率上限。

例如,假設您的最大輸送量是 20,000 RU/秒,而您有兩個實體分割區 (P_1 和 P_2)。 每個分割區都能夠調整為 10,000 RU/秒。 在指定的秒數內,如果 P_1 已使用 6,000 RU,P_2 已使用 8,000 RU,則標準化使用率為 MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU) = 0.8。

注意

Azure Cosmos DB 用戶端 SDK 和資料匯入工具 (大量執行工具程式庫 Azure Data Factory) 會在傳回 429 錯誤碼之後自動重試,因此偶爾出現 429 錯誤碼沒關係。 持續出現大量 429 代碼錯誤可能表示您需要增加 RU/秒上限,或檢閱分割策略以包含常用分割區

啟用自動調整時,是否可以發生節流或速率限制錯誤?

是。 在兩種情況下,您可能會看見 429 代碼錯誤。

第一種情況是,當整體耗用的 RU/秒超過資料庫或容器的 RU/秒上限時,服務將會視情況節流要求。

第二種情況是,如果邏輯分割區索引鍵值與其他分割區索引鍵值相比之下,要求數量較高 (例如常用分割區),則基礎實體分割區可能超過其 RU/秒預算。 最佳做法是避免常用分割區,選擇良好的分割區索引鍵,讓儲存體和輸送量能夠平均分佈。

例如,如果您選取 20,000 RU/秒最大輸送量選項,並且有 200 GB 的儲存體,如果您有四個實體分割區,則每個實體分割區最多可自動調整至 5000 RU/秒。 如果特定邏輯分割區索引鍵上有常用分割區,當其所在的基礎實體分割區超過 5,000 RU/秒時 (亦即超過 100% 的標準化使用率),您就會看到 429 代碼錯誤。

使用自動調整時看到 429 代碼錯誤不一定表示您的資料庫或容器發生問題。 一般而言,對於生產工作負載而言,如果 1% 到 5% 的要求有 429 代碼錯誤,且您的端對端延遲是可接受的,則這些錯誤是已充分利用 RU/秒的良好訊號。 您不需要執行任何動作。

深入了解如何解譯和偵錯代碼為 429 的速率限制錯誤

如果自動調整規模未調整為 RU/秒上限,標準化 RU/秒耗用量是否為 100%。

是。 如需詳細資訊,請參閱監視標準化 RU/秒