設定 OceanBase MySQL 類型的表分區策略
樣本:在資料庫 test_data 中,對order表設定建立分區策略和刪除分區策略。
在 SQL 視窗中,編輯 SQL 陳述式以建立表 order。

CREATE TABLE `order` ( `time` date NOT NULL, `parti_key` int(11), `name` varchar(120) DEFAULT NULL ) partition by range columns(time, parti_key) (partition p2023_01 values less than ('2023-01-01', 20230101), partition p2023_02 values less than ('2023-02-01', 20230201))在 SQL 開發視窗的 工單 頁簽中單擊 分區計劃 > 建立分區計劃。

在 建立分區計劃 面板中,單擊
編輯分區策略。
在 設定分區策略 面板中,勾選 分區策略 項下的 建立策略 和 刪除策略。

建立分區策略
設定將要建立的分區數量。
建立規則。
如上圖所示,可以對
order表中包含的time和parti_key分區鍵設定分區策略。time:該分區鍵類型為DATE,屬於時間類型,因此其可以使用 順序遞增 作為分區建立策略。樣本中,time分區鍵的建立策略是以目前時間(即分區計劃任務實際運行時的時間)為基準時間,間隔 1 個月產生若干分區。parti_key:該分區鍵類型為INT,嘗試使用 自訂 作為分區建立策略。假定需要以目前時間為基準,間隔 1 個月產生若干分區。參照 自訂分區建立策略 一節中的表述,該運算式可以按照如下步驟產生:擷取分區產生的基準時間:由於是以目前時間為基準,可以直接使用
now()函數。定義分區產生的間隔:由於樣本中是以 1 個月為間隔,因此在 建立規則 > 細則 > 間隔 中填入 1 作為固定間隔,且在步驟 1 運算式的基礎上增加 interval 運算式,產生下一個分區。即
now () + interval ${INTERVAL} month,其中${INTERVAL}指代 建立規則 > 細則 > 間隔 中填入的值。產生對應分區鍵類型的分區運算式:
parti_key的類型為int,但步驟 1 中產生的運算式的類型為時間類型,需要將其轉換為int類型。您可以先將其轉成數字樣式的字串,再轉換為int類型,即:cast(date_format(now() + interval ${INTERVAL} month, '%Y%m01') as signed)。其中,
CAST(xxx AS SIGNED):將欄位轉換成整數。DATE_FORMAT():將欄位轉換成日期格式。NOW():返回當前日期。說明在 ODC 中,還支援通過變數 ${LAST_PARTITION_VALUE} 引入當前資料庫的分區上限值,例如
${LAST_PARTITION_VALUE} + interval ${INTERVAL} month表示從資料庫最新的分區上限值進行後續分區產生。INTERVAL ${INTERVAL} MONTH:按月間隔運算式,${INTERVAL}為 ODC 定義的時間間隔函數固定用法。'%Y%m01':日期格式。
選擇命名方式。
如上圖所示,選擇的命名方式為 首碼+尾碼,該命名方式由一個固定的字串首碼和基於時間的可變尾碼構成。
固定首碼:該首碼可由使用者自由指定。
可變尾碼:可選擇時間類型的分區鍵對應的分區上界作為當前分區的命名尾碼,另外可選時間的格式化輸出格式以及時間的遞增間隔。
配置完成後,單擊 測試產生 按鈕可以查看設定的分區名。
選擇是否將表中最後一個分區的統計資訊複製到新分區。
刪除分區策略
分區保留數量:保留最近的 N 個分區,即刪除最近 N 個分區外的其他分區。
設定分區資料保留時間:刪除分區時,需確保該分區的上界小於設定的保留時間點;否則不予刪除。
刪除後是否重建索引:用於控制刪除分區後是否自動重建索引,以保證索引的完整性和查詢效能。
單擊 分區策略 面板右下角的 預覽 SQL 查看根據所設定的分區策略產生的 SQL 陳述式。

單擊 確定,完成設定分區策略。
單擊 提交,建立分區計劃。
設定 OceanBase Oracle 類型的表分區策略
樣本:在資料庫 SYS 中,對order表設定建立分區策略和刪除分區策略。
在 SQL 視窗中,編輯 SQL 陳述式以建立表 order。

CREATE TABLE "SYS"."order" ( "TIME" DATE NOT NULL ENABLE, "KEY" NUMBER(*,0) NOT NULL ENABLE, "NAME" VARCHAR2(120) DEFAULT NULL ) COMPRESS FOR ARCHIVE REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 partition by range("TIME", "KEY") (partition "p2024_01" values less than (TO_DATE(' 2024-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),20240101), partition "p2024_02" values less than (TO_DATE(' 2024-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),20240201));在 SQL 開發視窗的 工單 頁簽中單擊 分區計劃 > 建立分區計劃。

在建立分區計劃面板中,單擊
編輯分區策略。
在 設定分區策略 面板中,勾選 分區策略 項下的 建立策略 和 刪除策略。

建立分區策略
設定將要建立的分區數量。
建立規則。
如上圖所示,可以對
order表中包含的TIME和KEY分區鍵設定分區策略。TIME:該分區鍵類型為DATE,屬於時間類型,因此其可以使用 順序遞增 作為分區建立策略。樣本中,TIME分區鍵的建立策略是以目前時間(即分區計劃任務實際運行時的時間)為基準時間,間隔 1 個月產生若干分區。KEY:該分區鍵類型為NUMBER,嘗試使用 自訂 作為分區建立策略。假定需要以當前系統時間為基準,間隔 1 個月產生若干分區。參照 自訂分區建立策略 一節中的表述,該運算式可以按照如下步驟產生:擷取分區產生的基準時間:由於是以當前系統時間為基準,可以直接使用
sysdate函數。定義分區產生的間隔:由於樣本中是以 1 個月為間隔,因此在 建立規則 > 細則 > 間隔 中填入
NUMTOYMINTERVAL(1, 'MONTH')作為固定間隔,且在步驟 1 運算式的基礎上增加 interval 運算式,產生下一個分區。即SYSDATE + ${INTERVAL},其中${INTERVAL}指代 建立規則 > 細則 > 間隔 中填入的值。產生對應分區鍵類型的分區運算式:
KEY的類型為NUMBER,但步驟 1 中產生的運算式的類型為時間類型,需要將其轉換為NUMBER類型。您可以先將其轉成數字樣式的字串,再轉換為NUMBER類型,即:TO_CHAR(SYSDATE + ${INTERVAL}, 'YYYYMM"01"')。其中,
TO_CHAR:將欄位轉換成字元型。SYSDATE:返回當前系統時間。YYYYMM"01":日期格式。
選擇命名方式。
如上圖所示,選擇的命名方式為 首碼+尾碼,該命名方式由一個固定的字串首碼和基於時間的可變尾碼構成。
固定首碼:該首碼可由使用者自由指定。
可變尾碼:可選擇時間類型的分區鍵對應的分區上界作為當前分區的命名尾碼,另外可選時間的格式化輸出格式以及時間的遞增間隔。
配置完成後,單擊 測試產生 按鈕可以查看設定的分區名。
將表中最後一個分區的統計資訊複製到新分區:否。
刪除分區策略
分區保留數量:保留最近的 N 個分區,即刪除最近 N 個分區外的其他分區。
設定分區資料保留時間:刪除分區時,需確保該分區的上界小於設定的保留時間點;否則不予刪除。
刪除後是否重建索引:用於控制刪除分區後是否自動重建索引,以保證索引的完整性和查詢效能。
單擊 分區策略 面板右下角的 預覽 SQL 查看根據所設定的分區策略產生的 SQL 陳述式。

單擊 確定,完成設定分區策略。
單擊 提交,建立分區計劃。