全部產品
Search
文件中心

PolarDB:INTERVAL RANGE簡介

更新時間:Jul 06, 2024

INTERVAL RANGE是RANGE分區的擴充,當新插入的資料超過現有分區的範圍時,該分區允許資料庫自動建立新分區。

前提條件

叢集版本需為PolarDB MySQL版8.0.2版本且Revision version為8.0.2.2.0及以上。您可以通過查詢版本號碼確認叢集版本。

簡介

向RANGE分區表插入資料時,如果插入的資料超出當前已存在分區的範圍,將無法插入並且會返回錯誤;而對於INTERVAL RANGE分區表,當新插入的資料超過現有分區的範圍時,允許資料庫自動建立新分區,根據INTERVAL子句指定的範圍來新增分區。

如果分區範圍設定為1個月,新插入的資料為當前轉換點(當前存在的分區的最大邊界值)兩個月後的資料,將會建立該資料所在月份的分區,以及中間月份的分區。例如,您可以建立一個INTERVAL RANGE分區表,該表分區範圍為1個月且當前的轉換點為2021年9月15日。如果您嘗試為2021年12月10日插入資料,那麼將建立2021年9月15日至12月15日所需的3個分區,並將資料插入該分區。

使用限制

  • INTERVAL RANGE分區使用COLUMNS只能指定單個分區鍵,該鍵必須是數字或日期範圍。
  • 必須定義至少一個RANGE分區。
  • INTERVAL RANGE分區表的分區只按遞增順序建立。
  • 如果分區鍵為DATE類型,INTERVAL的類型不能是TIME類型(HOUR、MINUTE、SECOND);如果分區鍵為TIME類型,INTERVAL的類型不能是DATE類型(YEAR、QUARTER、MONTH、WEEK、DAY);如果分區鍵不是時間類型,INTERVAL不能指定類型,使用預設類型;指定的間隔大小必須是正整數,如果類型是SECOND,間隔不能小於60。
  • 暫時不支援通過INSERT SELECT和UPDATE新增分區。
  • 暫時不支援改變建表時定義的間隔。
  • 暫時不支援定義二級分區。
  • 通過LOAD DATA匯入資料時需要保證當前分區表的分區範圍可以覆蓋所有資料。
  • 不支援通過TRIGGER、STORED FUNCTION、STORED PROCEDURE向INTERVAL RANGE分區插入資料。
  • 不支援LOCK TABLES。
  • 不支援分區鍵是AUTO_INCREMENT、virtual column、generated default column;不支援分區鍵是STRING類型。
  • 使用者自己定義分區的命名不能用_p作為分區名的首碼(包括建表以及DDL)。
  • 自動增加的分區,一旦建立成功,不支援復原。
  • 在通過INSERT語句自動增加分區的同時,執行另外的DDL語句,有可能導致檢測到死結而報錯。

使用方法

您可以通過設定如下參數開啟或設定INTERVAL RANGE功能。
參數名稱參數說明
partition_level_mdl_enabled目前INTERVAL RANGE是基於PARTITION Level MDL這個功能來實現的,這樣做的好處是可以藉助這個更小粒度的MDL,來減少DDL對DML的影響。因此,使用INTERVAL RANGE功能需要保證partition_level_mdl_enabled參數為開啟狀態。如果這個參數關閉,將不能建立INTERVAL RANGE分區表,對於已經存在的INTERVAL RANGE分區表,只能插入符合當前已存在分區的範圍的值,插入分區範圍以外的值會報錯。
interval_partitioning_enabledinterval_partitioning_enabled參數用來單獨控制INTERVAL RANGE功能,而partition_level_mdl_enabled參數是PARTITION Level MDL功能的控制參數,這2個參數都會制約INTERVAL RANGE功能的使用,缺一不可。使用INTERVAL RANGE功能,在開啟partition_level_mdl_enabled參數的基礎上,需要保證interval_partitioning_enabled參數為開啟狀態。如果這個參數關閉,將不能建立INTERVAL RANGE分區表,對於已經存在的INTERVAL RANGE分區表,只能插入符合當前已存在分區的範圍的值,插入分區範圍以外的值會報錯。
transaction_isolation由於PARTITION Level MDL功能限制隔離等級只能為READ-COMMITTED或READ-UNCOMMITTED,所以該參數要與PARTITION Level MDL功能的限制隔離等級保持一致。當前線上叢集預設為READ-COMMITTED隔離等級。