すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase:例

最終更新日:Jan 21, 2025

このトピックでは、パーティション作成戦略とパーティション削除戦略の設定例を紹介します。

OceanBase MySQL データソースのテーブルパーティション戦略を設定する

例: mysql424 データソースの test_424 データベースにある order テーブルのパーティション作成戦略とパーティション削除戦略を設定します。

パラメータ

値の例

プロジェクト名

odc_4.2.0

データソース

mysql4.2.4

データベース名

test_424

テーブル名

order

  1. SQL ウィンドウで、order という名前のテーブルを作成する SQL 文を記述します。

    image

    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))
    
  2. SQL ウィンドウの チケットパーティション分割計画新規作成 タブで、 > を選択します。

    image

  3. [パーティション作成計画] パネルで、image をクリックしてパーティション分割戦略を設定します。

    image

  4. パーティション分割戦略を構成する作成戦略削除戦略パーティション分割戦略 パネルで、 の下の と を選択します。

    image

  5. 作成するパーティションの数を設定します。

  6. パーティション作成ルールを構成します。

    前の図に示すように、order テーブルの time パーティションキーと parti_key パーティションキーのパーティション作成戦略を設定できます。

    • time: このパーティションキーのデータ型は、時間型である date です。そのため、作成方法として [順次増加] を選択できます。この例では、time パーティションキーのパーティション作成戦略に従って、現在の時間(パーティションプランタスクが実行される時間)が基準時間として使用され、1 か月の時間間隔でパーティションが作成されます。

    • parti_key: このパーティションキーのデータ型は int で、時間型ではありません。そのため、作成方法としてカスタムのみを選択できます。現在の時間を基準時間として使用し、1 か月の時間間隔でパーティションを作成する必要があるとします。カスタムパーティション作成ストラテジー セクションの説明に従って、次の手順を実行してパーティション式を生成できます。

      1. パーティション作成の基準時間を入手する: 現在の時間が基準時間として使用されます。したがって、now() 関数を直接使用できます。

      2. パーティション作成の時間間隔を定義する: この例では、時間間隔は 1 か月です。したがって、1間隔ルール作成ルールnow () + interval ${INTERVAL} か月${INTERVAL}間隔ルール作成ルール セクションの 列の フィールドに を入力し、手順 1 で生成された式に基づいて間隔式を追加して、次のパーティションを生成する必要があります。具体的には、式は です。ここで、 は セクションの 列の フィールドの値です。

      3. パーティションキーと同じデータ型のパーティション式を生成する: 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(): 現在の日付を返します。

        • INTERVAL ${INTERVAL} MONTH: 月単位で間隔を指定する式。${INTERVAL}は、ODC の時間間隔関数の特定の構文です。

        • '%Y%m01': 日付形式。

  7. パーティション命名形式を選択します。

    前の図に示すように、プレフィックス + サフィックス命名規則 で を選択します。これは、固定文字列プレフィックスと時間ベースの可変サフィックスで構成されます。

    1. 固定プレフィックス: 必要に応じてプレフィックスを定義できます。

    2. 可変サフィックス: 時間型のパーティションキーに対応するパーティションの上限を、現在のパーティションの名前のサフィックスとして選択できます。時間のフォーマット済み出力形式と時間の増分間隔も選択できます。

    3. 構成後、テスト生成 をクリックしてパーティション名を表示します。

  8. パーティションの削除 セクションで、保持するパーティションの数を設定し、削除後にインデックスを再構築するかどうかを選択します。

  9. SQL のプレビューパーティション分割戦略を構成する パネルの右下隅にある をクリックして、構成されたパーティション戦略によって生成された SQL 文を表示します。

    image

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

OceanBase Oracle データソースのテーブルパーティション戦略を設定するOceanBase Oracle データソースのテーブルパーティショニング戦略を設定する

例: oboracle_430 データソースの OBORACLE データベースにある order テーブルのパーティション作成戦略とパーティション削除戦略を設定します。

パラメータ

値の例

プロジェクト名

odc_4.2.0

データソース

oboracle_430

データベース名

OBORACLE

テーブル名

order

  1. SQL ウィンドウで、order という名前のテーブルを作成する SQL 文を記述します。

    image

    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));
    
  2. SQL ウィンドウの チケットパーティション分割計画新規作成 タブで、 > を選択します。

    image

  3. [パーティション作成計画] パネルで、image をクリックしてパーティション分割戦略を設定します。

    image

  4. パーティション分割戦略を構成する作成戦略削除戦略パーティション分割戦略 パネルで、 の下の と を選択します。

    image

  5. 作成するパーティションの数を設定します。

  6. パーティション作成ルールを構成します。

    前の図に示すように、order テーブルの TIME パーティションキーと KEY パーティションキーのパーティション作成戦略を設定できます。

    • TIME: このパーティションキーのデータ型は、時間型である DATE です。そのため、作成方法として [順次増加] を選択できます。この例では、TIME パーティションキーのパーティション作成戦略に従って、現在の時間(パーティションプランタスクが実行される時間)が基準時間として使用され、1 か月の時間間隔でパーティションが作成されます。

    • KEY: このパーティションキーのデータ型は NUMBER であり、時間型ではありません。そのため、作成方法として カスタム のみを選択できます。現在のシステム時刻を基準時間として使用し、1 か月の時間間隔でパーティションを作成する必要があるとします。カスタムパーティション作成ストラテジ セクションの説明に従って、次の手順を実行してパーティション式を生成できます。

      1. パーティション作成の基準時間を入手する: 現在の時間が基準時間として使用されます。したがって、SYSDATE 関数を直接使用できます。

      2. パーティション作成の時間間隔を定義する: この例では、時間間隔は 1 か月です。したがって、1間隔ルール作成ルールSYSDATE + ${INTERVAL}${INTERVAL}間隔ルール作成ルール セクションの 列の フィールドに を入力し、手順 1 で生成された式に基づいて間隔式を追加して、次のパーティションを生成する必要があります。具体的には、式は です。ここで、 は セクションの 列の フィールドの値です。

      3. パーティションキーと同じデータ型のパーティション式を生成する: KEY パーティションキーのデータ型は NUMBER ですが、手順 1 と手順 2 の完了後に生成される式は時間型です。したがって、式を NUMBER 型に変換する必要があります。最初に式を数値文字列に変換し、次に NUMBER 型に変換できます。つまり、TO_CHAR(SYSDATE + ${INTERVAL}, 'YYYYMM"01"') です。

        • TO_CHAR: フィールド値を文字型に変換します。

        • SYSDATE: 現在のシステム時間を返します。

        • YYYYMM"01": 日付形式。

  7. パーティション命名形式を選択します。

    前の図に示すように、プレフィックス + サフィックス命名規則 で を選択します。これは、固定文字列プレフィックスと時間ベースの可変サフィックスで構成されます。

    1. 固定プレフィックス: 必要に応じてプレフィックスを定義できます。

    2. 可変サフィックス: 時間型のパーティションキーに対応するパーティションの上限を、現在のパーティションの名前のサフィックスとして選択できます。時間のフォーマット済み出力形式と時間の増分間隔も選択できます。

    3. 構成後、テスト生成 をクリックしてパーティション名を表示します。

  8. パーティションの削除 セクションで、保持するパーティションの数を設定し、削除後にインデックスを再構築するかどうかを選択します。

  9. SQL のプレビューパーティション分割戦略を構成する パネルの右下隅にある をクリックして、構成されたパーティション戦略によって生成された SQL 文を表示します。

    image

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

参照資料