このドキュメントでは、パーティション作成戦略とパーティション削除戦略の設定方法について説明します。
OceanBaseのMySQLタイプテーブルのパーティションポリシーを設定する
このセクションでは、OceanBaseのMySQLタイプテーブルのパーティションポリシーを設定する例を通じて、データソースmysql424のデータベースtest_424内の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':日付の書式です。
名前付け方法を選択します。
上図のように、選択した命名方式は プレフィックス+サフィックス です。この命名方式は、固定文字列のプレフィックスと時間に基づく可変のサフィックスで構成されます。
固定プレフィックス:このプレフィックスはユーザーが自由に指定できます。
可変サフィックス:時間型のパーティションキーに対応するパーティションの上限値を現在のパーティション名のサフィックスとして選択できます。また、時間のフォーマット出力形式や時間の増分間隔も選択可能です。
設定完了後、プレビュー ボタンをクリックすると、設定したパーティション名を確認できます。
パーティションの削除 項目で、時間間隔に応じて事前に必要な数のパーティションを作成し、削除後のインデックスの再構築の有無を選択します。
パーティションポリシー パネルの右下にある SQLプレビュー をクリックすると、設定したパーティションポリシーに基づいて生成されたSQL文を確認できます。
- わかりました をクリックすると、パーティションポリシーの設定が完了します。
OceanBase Oracle型テーブルのパーティション戦略の設定
このセクションでは、OceanBase Oracle型テーブルのパーティション戦略を設定する例を用いて、データソースoboracle4.3.xのデータベースOBORACLEにおいて、order テーブルに対して作成パーティション戦略と削除パーティション戦略を設定する方法を説明します。
SQLウィンドウで、SQLステートメントを編集してテーブルorderを作成します。
CREATE TABLE "OBORACLE"."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":日付形式です。
名前付け方法を選択します。
上図のように、選択した名前付け方法は プレフィックス+サフィックス です。この名前付け方法は、固定文字列のプレフィックスと時間に基づく可変のサフィックスで構成されます。
固定プレフィックス:このプレフィックスはユーザーが自由に指定できます。
変動サフィックス:時間型のパーティションキーに対応するパーティションの上限値を、現在のパーティション名のサフィックスとして選択できます。また、時間のフォーマット出力形式や時間の増分間隔も選択可能です。
設定完了後、プレビュー ボタンをクリックすると、設定したパーティション名を確認できます。
パーティションの削除 項目で、時間間隔に応じて事前に必要な数のパーティションを作成し、削除後のインデックスの再構築の有無を選択します。
パーティションポリシー パネルの右下にある SQLプレビュー をクリックすると、設定したパーティションポリシーに基づいて生成されたSQL文を確認できます。

わかりました をクリックすると、パーティションポリシーの設定が完了します。