OceanBase MySQL 互換データソースのテーブルパーティショニング戦略を設定する
例: mysql424 データソースの test_424 データベースにある order テーブルのパーティション作成戦略とパーティション削除戦略を設定します。
パラメーター | 値の例 |
プロジェクト名 | odc_4.2.0 |
データソース | mysql424 |
データベース名 | test_424 |
テーブル名 | order |
SQL ウィンドウで、order という名前のテーブルを作成する SQL 文を記述します。

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 で生成された式に基づいて間隔式を追加して、次のパーティションを生成する必要があります。具体的には、式は
now () + interval ${INTERVAL} monthです。ここで、${INTERVAL}は [作成ルール] セクションの [ルール] 列の [間隔] フィールドの値です。パーティショニングキーと同じデータの型のパーティショニング式を生成する:
parti_keyパーティショニングキーのデータの型はintですが、ステップ 1 とステップ 2 が完了した後に生成される式は時間型です。したがって、式を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 文を表示します。

[OK] をクリックします。
OceanBase Oracle 互換データソースのテーブルパーティショニング戦略を設定する
例: oboracle_430 データソースの OBORACLE データベースにある order テーブルのパーティション作成戦略とパーティション削除戦略を設定します。
SQL ウィンドウで、order という名前のテーブルを作成する SQL 文を記述します。

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 で生成された式に基づいて間隔式を追加して、次のパーティションを生成する必要があります。具体的には、式はSYSDATE + ${INTERVAL}です。ここで、${INTERVAL}は [作成ルール] セクションの [ルール] 列の [間隔] フィールドの値です。パーティショニングキーと同じデータの型のパーティショニング式を生成する:
KEYパーティショニングキーのデータの型はNUMBERですが、ステップ 1 とステップ 2 が完了した後に生成される式は時間型です。したがって、式をNUMBER型に変換する必要があります。式を数値文字列に変換してからNUMBER型に変換できます。つまり、TO_CHAR(SYSDATE + ${INTERVAL}, 'YYYYMM"01"')です。TO_CHAR: フィールド値を文字型に変換します。SYSDATE: 現在のシステム時間を返します。YYYYMM"01": 日付フォーマット。
パーティションの命名フォーマットを選択します。
前の図に示すように、命名規則として [プレフィックス + サフィックス] を選択します。これは、固定文字列プレフィックスと時間ベースの可変サフィックスで構成されます。
固定プレフィックス: 必要に応じてプレフィックスを定義できます。
可変サフィックス: 時間型のパーティショニングキーに対応するパーティションの上限を、現在のパーティションの名前のサフィックスとして選択できます。また、時間のフォーマット済み出力フォーマットと時間の増分間隔を選択することもできます。
構成後、[テスト生成] をクリックしてパーティション名を表示します。
[パーティションの削除] セクションで、保持するパーティションの数を設定し、削除後にインデックスを再構築するかどうかを選択します。
[パーティショニング戦略の構成] パネルの右下隅にある [SQL のプレビュー] をクリックして、構成されたパーティショニング戦略によって生成された SQL 文を表示します。

[OK] をクリックします。