このドキュメントでは、パーティション作成戦略とパーティション削除戦略の設定方法について説明します。
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ステートメントを編集し、table 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ステートメントを確認できます。

確認 をクリックして、パーティション戦略の設定を完了します。