讀/寫輸送量的單位為讀服務能力單元和寫服務能力單元,簡稱CU(Capacity Unit),是資料讀寫操作的最小計費單位。當通過Tablestore的API對資料表進行讀寫操作時,會消耗對應的寫服務能力單元和讀服務能力單元。

CU計算規則

  • 1單位讀服務能力單元表示從資料表中讀一條4 KB資料。
  • 1單位寫服務能力單元表示向資料表寫一條4 KB資料。
  • 操作資料大小不足4 KB的部分向上取整,例如寫入7.6 KB資料消耗2單位寫服務能力單元,讀出0.1 KB資料消耗1單位讀服務能力單元。

按量讀/寫輸送量

按量讀/寫輸送量是資料表在每秒實際消耗的讀/寫輸送量中超出預留讀/寫輸送量的部分,統計周期為1秒。每個小時內,Tablestore對預留讀/寫輸送量取平均值,對按量讀/寫輸送量取累加值來作為使用者實際消耗的輸送量。

由於按量讀/寫輸送量的模式無法預估需要為資料表預留的計算資源,Tablestore需要提供足夠的服務能力以應對突發的訪問高峰,所以按量讀/寫輸送量的單價高於預留讀/寫輸送量的單價。合理設定資料表的預留讀/寫輸送量能夠有效地降低使用成本。

重要 由於按量讀/寫輸送量無法準確估計需要預留的資源,在某些極端訪問情況下,如果單個分區鍵每秒的訪問需要消耗10000 CU,Tablestore可能會返回OTSCapacityUnitExhausted錯誤。此時需要使用退避重試等策略來減少訪問該資料表的頻率。

預留讀/寫輸送量

说明 使用多元索引時,Tablestore會根據索引資料規模自動化佈建一個預留讀輸送量。更多資訊,請參見多元索引計量計費。多元索引中的預留讀輸送量配置不支援調整,如果期望減少該部分開銷,只能通過最佳化索引大小或行數來解決。
預留讀/寫輸送量是高效能執行個體中資料表的一個屬性。在建立資料表時,可以為資料表指定預留讀/寫輸送量。
  • 當設定的預留讀/寫輸送量大於0時,Tablestore會為資料表分配和預留相應的資源,每秒對資料表的訪問不超過預留讀/寫輸送量時將按照預留讀/寫輸送量的單價計費。
  • 當設定的預留讀/寫輸送量等於0時,Tablestore不會為資料表分配和預留相應的資源。
    说明 不存在的資料表將視作預留讀/寫輸送量均為0,訪問不存在的資料表將根據操作類型消耗1個按量讀CU或者1個按量寫CU。

由於預留讀/寫輸送量在單價上低於按量讀/寫輸送量,配置合適的預留讀/寫輸送量可以進一步降低成本。例如資料表建立後如果需要匯入大量資料,可以設定較大的預留寫輸送量,能夠以較低的寫成本匯入資料,當資料匯入完成後,再將預留讀/寫輸送量下調。

使用限制

  • 容量型執行個體下的資料表不支援設定預留讀/寫輸送量。
  • 當預留讀/寫輸送量大於0時,即使沒有讀寫請求也會進行計費,所以Tablestore限制使用者能夠自行設定的單個資料表預留讀/寫輸送量最大為100000(預留讀輸送量和預留寫輸送量分別不超過100000)。當使用者對單個資料表的預留讀/寫輸送量需求超出100000時,可以提交工單提高預留讀/寫輸送量。

預留讀/寫輸送量更新規則

通過UpdateTable介面可以動態修改表的預留讀/寫輸送量配置。預留讀/寫輸送量的更新規則如下:
  • 每個自然日內(UTC時間00:00:00到第二天的00:00:00,北京時間早上8點到第二天早上8點),上調或者下調預留讀/寫輸送量的總次數不做限制,一張資料表上的兩次更新的間隔必須大於1分鐘。
  • 預留讀/寫輸送量調整完成後1分鐘內生效。

計算樣本

假如資料表設定的預留讀輸送量為100 CU,連續3秒的訪問情況如下:

  • T0:讀操作實際消耗120 CU讀輸送量,則這1秒內預留輸送量為100 CU,消耗的按量讀輸送量為20 CU。
  • T1:讀操作實際消耗95 CU讀輸送量,則這1秒內預留輸送量為100 CU,消耗的按量讀輸送量為0 CU。
  • T2:讀操作實際消耗110 CU讀輸送量,則這1秒內預留輸送量為100 CU,消耗的按量讀輸送量為10 CU。

T0到T2時刻消耗的讀輸送量為:100 CU預留讀輸送量以及30 CU按量讀輸送量。