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

Hologres:動的パーティション管理

最終更新日:Feb 03, 2026

Hologres の動的パーティション機能は、テーブル作成時に設定したルールに基づき、子パーティションを自動的に作成・管理します。事前にすべてのパーティションを定義する必要はありません。また、この機能では、条件を満たすデータを低頻度アクセスストレージデバイスに移行することで、クエリパフォーマンスを維持しつつストレージ費用を削減できます。

機能概要

以下のリストは、Hologres の各バージョンにおける機能サポート状況を示しています。

  • Hologres V1.3 以降では、動的パーティションルールを設定できます。システムはこれらのルールに基づき、定期的にスケジュールタスクを実行し、子パーティションを事前作成または期限切れのものを削除します。

  • Hologres V1.3.37 以降では、ホットデータとコールドデータの階層型ストレージ(Tiered Storage)の動的管理がサポートされます。この機能により、データが自動的にコールドストレージに移行され、ストレージコストを削減できます。詳細については、「階層型ストレージ」をご参照ください。

  • Hologres V2.1.11 以降では、パーティションキーとして Date 型がサポートされます。

  • Hologres V2.2 以降では、動的パーティション設定テーブルに schd_start_time プロパティを使用して、パーティションのスケジュール時間をカスタマイズできます。これにより、パーティションの作成・削除・コールドストレージへの移行を任意の時間に設定できます。

  • Hologres V3.0.12 以降では、新しい auto_partitioning_time_format パラメーターが利用可能になります。このパラメーターを使用して、パーティションキーの日時フォーマットを指定できます。たとえば、YYYY-MM-DD 形式でパーティションを作成するよう指定できます。

注意事項

  • Hologres では、親テーブルではなく子テーブルに直接データをインポートできます。

    説明

    Realtime Compute for Apache Flink を使用すると、Hologres の親テーブルにリアルタイムでデータをインポートできます。詳細については、「パーティション化された Hologres 結果テーブルにリアルタイムでデータを書き込む」をご参照ください。

  • 1 つのパーティションルールで作成できるパーティションテーブルは 1 つだけです。

  • PARTITION BY 句では、リストパーティションのみがサポートされます。パーティションキーは単一カラムである必要があります。

  • パーティションテーブルにプライマリキーが設定されている場合、パーティションキーはプライマリキーのサブセットである必要があります。

  • 動的パーティション機能では、スケジュール時間 (schd_start_time) の設定は親テーブルに対してのみ可能です。子パーティションには設定できません。

  • auto_partitioning_time_format パラメーターは一度しか設定できず、設定後は変更できません。新規テーブルでは、CREATE TABLE 文でこのパラメーターを設定してください。既存テーブルでは変更できません。

  • auto_partitioning_time_format パラメーターで日時フォーマットを指定した場合、子パーティションの命名フォーマットはパーティションキーの日付フォーマットに従います。子パーティションをクエリする際は、子テーブル名を二重引用符で囲む必要があります。例: SELECT xxx FROM "tbl_2024_11_22"

動的パーティションの設定

構文説明

パーティションテーブル作成時に動的パーティション管理プロパティを設定するか、テーブル作成後に変更できます。構文は以下のとおりです。

WITH 句を使用した例

  • パーティションテーブル作成時に動的パーティション管理プロパティを設定します。

    -- パーティションテーブル作成時に動的パーティション管理プロパティを設定します。
    CREATE TABLE [IF NOT EXISTS] [<schema_name>.]<table_name>  ([
      {
       <column_name> <column_type> [ <column_constraints>, [...]]
       | <table_constraints>
       [, ...]
      }
    ])
    PARTITION BY LIST(<column_name>)
    WITH (
       auto_partitioning_enable = 'xxx',
       auto_partitioning_time_unit = 'xxx',
       auto_partitioning_time_zone = 'xxx',
       auto_partitioning_num_precreate = 'xxx',
       auto_partitioning_num_retention = 'xxx',
       auto_partitioning_num_hot='xxx',
       -- 注: schd_start_time パラメーターは Hologres V2.2 以降でサポートされます。
       auto_partitioning_schd_start_time = 'xxx',
       -- 注: time_format パラメーターは Hologres V3.0.12 以降でサポートされます。
       auto_partitioning_time_format = 'xxx'
    );
  • パーティションテーブル作成後に動的パーティション管理プロパティを変更します。

    -- 動的パーティション管理プロパティを変更します。
    ALTER TABLE [<schema_name>.]<table_name> SET (
       auto_partitioning_enable = 'xxx',
       auto_partitioning_time_unit = 'xxx',
       auto_partitioning_time_zone = 'xxx',
       auto_partitioning_num_precreate = 'xxx',
       auto_partitioning_num_retention = 'xxx',
       auto_partitioning_num_hot='xxx',
       -- 注: schd_start_time パラメーターは Hologres V2.2 以降でサポートされます。
       auto_partitioning_schd_start_time = 'xxx',
       -- 注: time_format パラメーターは Hologres V3.0.12 以降でサポートされます。
       auto_partitioning_time_format = 'xxx'
    );
    

CALL 文を使用した例

  • パーティションテーブル作成時に動的パーティション管理プロパティを設定します。

    -- パーティションテーブル作成時に動的パーティション管理プロパティを設定します。
    BEGIN;
    CREATE TABLE [IF NOT EXISTS] [<schema_name>.]<table_name>  ([
      {
       <column_name> <column_type> [ <column_constraints>, [...]]
       | <table_constraints>
       [, ...]
      }
    ])
    PARTITION BY LIST(<column_name>);
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.enable', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_unit', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_zone', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_precreate', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_retention', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_hot', 'xxx');
    -- 注: schd_start_time パラメーターは Hologres V2.2 以降でサポートされます。
    CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.schd_start_time', 'xxx');
    -- 注: time_format パラメーターは Hologres V3.0.12 以降でサポートされます。
    CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');
    COMMIT;
  • パーティションテーブル作成後に動的パーティション管理プロパティを変更します。

    -- 動的パーティション管理プロパティを変更します。
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.enable', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_precreate', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_retention', 'xxx');
    -- 注: time_format パラメーターは Hologres V3.0.12 以降でサポートされます。
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');

パラメーター説明

重要

CREATE TABLE WITH 構文を使用して動的パーティションを設定する場合、パラメーター名のピリオド (.) をアンダースコア (_) に置き換えてください。たとえば、auto_partitioning.enableauto_partitioning_enable に変更します。

パラメーター名

必須

説明

更新可

バージョン要件

auto_partitioning_enable/auto_partitioning.enable

いいえ

動的パーティション管理を有効にするかどうかを指定します。有効値:

  • true:動的パーティション管理を有効にします。

  • false(デフォルト):動的パーティション管理を無効にします。

はい

Hologres V1.3 以降

auto_partitioning_time_unit/auto_partitioning.time_unit

はい

動的パーティションの時間単位を指定します。有効値:

  • HOUR

  • DAY

  • MONTH

  • QUARTER

  • YEAR

たとえば、このパラメーターを DAY に設定すると、パーティションは日単位で事前作成および削除されます。

いいえ

auto_partitioning_time_zone/auto_partitioning.time_zone

いいえ

動的パーティションのタイムゾーンを指定します。デフォルト値は現在の接続のタイムゾーンです。このパラメーターを設定すると、指定されたタイムゾーンの時刻に基づいて動的パーティション管理が実行されます。

次の SQL 文を実行して、利用可能なタイムゾーンとそのオフセットを確認できます。name 列の値が timezone の値(例:Asia/Shanghai)となります。

SELECT * FROM pg_timezone_names;

いいえ

auto_partitioning_num_precreate/auto_partitioning.num_precreate

いいえ

事前作成するパーティション数を指定します。有効値:

  • 0:事前作成なし。

  • [1, 512]:現在時刻を基準にパーティションを作成します。2 以上を推奨します。デフォルト値は 4 です。

説明

たとえば、現在時刻が 2022-01-10 の場合、time_unit = DAY, num_precreate = 3 の設定では、2022-01-10、2022-01-11、2022-01-12 の 3 つのパーティションが作成されます。

重要

パーティションの事前作成は、MAX_PT 関数の動作に影響します。このパラメーターを設定する前に、ワークロードが MAX_PT 関数に依存しているかどうかを確認してください。

はい

auto_partitioning_num_retention/auto_partitioning.num_retention

いいえ

保持する履歴パーティション数を指定します。有効値:

  • 0:履歴パーティションを保持しません。

  • -1(デフォルト):履歴パーティションをパージしません。

  • 正の整数:N 個の履歴パーティションを保持します。最大値は 512 です。

set hg_experimental_auto_part_max_maintained_partitions=<value>; を実行して、保持するパーティション数を調整できます。最大値は 8760 です。

説明

たとえば、現在日付が 2022-01-10 で、<time_unit = DAY, num_retention = 3> を設定した場合、2022-01-09、2022-01-08、2022-01-07 の 3 つのパーティションが保持されます。2022-01-07 より前の履歴パーティションは削除されます。

はい

auto_partitioning_num_hot/auto_partitioning.num_hot

いいえ

保持するホットパーティション数を指定します。有効値:

  • 0:ホットパーティションを保持しません。

  • -1(デフォルト):ホットパーティションをパージしません。

  • 正の整数:N 個のホットパーティションを保持します。最大値は 512 です。

Hologres V1.3.37 以降

auto_partitioning_schd_start_time/auto_partitioning.schd_start_time

いいえ

カスタムパーティションスケジュール時間を指定します。auto_partitioning.time_unit が HOUR に設定されている場合、デフォルトでは毎時開始時にスケジュールされます。他の値の場合、デフォルト時間は当日の 00:00:01 です。

このパラメーターを使用してスケジュール時間を変更できます。サポートされる日時フォーマットについては、「Date/Time Types」をご参照ください。将来の時刻を設定した場合、その時刻に設定が有効になります。

Hologres V2.2 以降

auto_partitioning_time_format/auto_partitioning.time_format

いいえ

テーブル作成時のパーティションキーの日時フォーマットを指定します。

  • デフォルトフォーマット:YYYYMMDDHH24(HOUR)、YYYYMMDD(DAY)、YYYYMM(MONTH)、YYYYQ(QUARTER)、YYYY(YEAR)

  • オプションフォーマット:YYYY-MM-DD-HH24(HOUR)、YYYY-MM-DD(DAY)、YYYY-MM(MONTH)、YYYY-Q(QUARTER)

いいえ

Hologres V3.0.12 以降

テーブル名の生成ルール

auto_partitioning.time_unit パラメーターが HOUR、DAY、MONTH、QUARTER、または YEAR に設定されている場合、動的パーティションは親テーブル名に時間サフィックスを付加した形式で新しいパーティション名を生成します。形式は {parent_table}_{time_suffix} です。時間サフィックスは、自動パーティションのスケジュール時間と時間単位に対応するフォーマットテンプレートに基づいて生成されます。具体的なマッピングは以下のとおりです。

時間単位

時間サフィックスフォーマット

実行時間

HOUR

YYYYMMDDHH24

2024112221.

毎時開始時に実行されます。たとえば、2024 年 11 月 22 日 21:00:01 にタスクが実行されます。

YYYY-MM-DD-HH24

2024-11-22-21.

DAY

YYYYMMDD

20241122.

毎日 00:00:01 に実行されます。たとえば、2024 年 11 月 22 日 00:00:01 です。

YYYY-MM-DD

2024-11-22.

MONTH

YYYYMM

202411.

毎月 1 日の 00:00:01 に実行されます。たとえば、2024 年 11 月 1 日 00:00:01 です。

YYYY-MM

2024-11.

QUARTER

YYYYQ

20241、20242、20243、20244 は 2024 年の第 1~4 四半期を表します。

各四半期の初日の 00:00:01 に実行されます。たとえば、2024 年 1 月 1 日 00:00:01 です。

YYYY-Q

2024-1、2024-2、2024-3、2024-4 は 2024 年の第 1~4 四半期を表します。

YEAR

YYYY

2023 および 2024 はそれぞれ 2023 年および 2024 年のパーティションを表します。

毎年 1 月 1 日の 00:00:01 に実行されます。たとえば、2023 年 1 月 1 日 00:00:01 です。

使用例

以下の例では、時間単位を DAY に設定し、翌日以降 3 日分のパーティションを事前作成し、過去 2 日分の履歴パーティションを保持し、タイムゾーンを Asia/Shanghai に設定します。

WITH 句を使用した例

  1. パーティションテーブル tbl1 を作成します。

    -- V2.1 でパーティションテーブルを作成し、動的パーティション管理を設定します:
    
    CREATE TABLE tbl1 (
        c1 TEXT NOT NULL,
        c2 TEXT 
    )
    PARTITION BY LIST (c2)
    WITH (
       auto_partitioning_enable = 'true',
       auto_partitioning_time_unit = 'DAY',
       auto_partitioning_time_zone = 'Asia/Shanghai',
       auto_partitioning_num_precreate = '3',
       auto_partitioning_num_retention = '2'
    );
    
  2. 子パーティションが生成された後、データを挿入します。

    INSERT INTO tbl1 (c1, c2) VALUES ('Data 1', '20231212');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 2', '20231213');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 3', '20231214');
  3. データをクエリします。

    SELECT * FROM tbl1 WHERE c2='20231212';

    以下の結果が返されます。

    c1	     c2
    Data 1   20231212

CALL 文を使用した例

  1. パーティションテーブル tbl1 を作成します。

    -- パーティションテーブルを作成し、動的パーティション管理を設定します:
    BEGIN;
    CREATE TABLE tbl1 (
        c1 TEXT NOT NULL,
        c2 TEXT 
    )
    PARTITION BY LIST (c2);
    CALL set_table_property ('tbl1', 'auto_partitioning.enable', 'true');
    CALL set_table_property ('tbl1', 'auto_partitioning.time_unit', 'DAY');
    CALL set_table_property ('tbl1', 'auto_partitioning.time_zone', 'Asia/Shanghai');
    CALL set_table_property ('tbl1', 'auto_partitioning.num_precreate', '3');
    CALL set_table_property ('tbl1', 'auto_partitioning.num_retention', '2');
    COMMIT;
  2. 子パーティションが生成された後、データを挿入します。

    INSERT INTO tbl1 (c1, c2) VALUES ('Data 1', '20231212');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 2', '20231213');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 3', '20231214');
  3. データをクエリします。

    SELECT * FROM tbl1 WHERE c2='20231212';

    以下の結果が返されます。

    c1	     c2
    Data 1   20231212

パーティションの追加および削除のロジックは以下のとおりです。

時刻

イベント

結果

2023-12-12 09:00:00

上記の SQL 文を実行してパーティションテーブルを作成します。

  • 親テーブル作成:tbl1

  • 子パーティション作成:tbl1_20231212、tbl1_20231213、tbl1_20231214

2023-12-13 00:00:00

システムが自動的に子パーティションを作成します。

  • 子パーティション作成:tbl1_20231215

2023-12-14 00:00:00

システムが自動的に子パーティションを作成します。

  • 子パーティション作成:tbl1_20231216

2023-12-15 00:00:00

システムが自動的に子パーティションを作成およびパージします。

  • 子パーティション作成:tbl1_20231217

  • 子パーティションパージ:tbl1_20231212

2023-12-16 00:00:00

システムが自動的に子パーティションを作成およびパージします。

  • 子パーティション作成:tbl1_20231218

  • 子パーティションパージ:tbl1_20231213

一般的なユースケース

特定の子パーティションを保持する

デフォルトでは、システムは設定された動的パーティションルールに基づき、子パーティションを自動的に作成および削除します。保持範囲外の子パーティションは自動的に削除されます。ただし、一部のシナリオでは重要なパーティションのデータを保持する必要があります。たとえば、EC シナリオでは、毎年の独身の日のデータを前年比や前月比分析のために保持する必要がある場合があります。keep_alive プロパティをテーブルに追加することで、特定の子パーティションを保持できます。構文は以下のとおりです。

  • V2.1 以降でサポートされる構文:

    -- パーティションを保持
    ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'true');
    
    -- パーティションの保持を停止:保持プロパティを削除すると、動的パーティション管理が直ちに期限切れデータのパージをトリガーします。
    ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'false');
    
  • すべてのバージョンでサポートされる構文:

    -- パーティションを保持
    CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'true');
    
    -- パーティションの保持を停止:保持プロパティを削除すると、動的パーティション管理が直ちに期限切れデータのパージをトリガーします。
    CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'false');
    説明

    table_name は実際の子パーティション名に置き換えてください。

パーティションテーブルの記憶媒体を動的に管理する

パーティションテーブルを扱う際、ホットデータとコールドデータの階層型ストレージを使用することで、コストとパフォーマンスのバランスを効果的に取れます。たとえば、最新の N 個の履歴パーティションをホットストレージに動的に保持して頻繁なクエリ要求に対応し、それより古い M 個のパーティションをコールドストレージに格納してコストを削減できます。このシナリオは、動的パーティション管理機能を使用して、N+M 個より古いデータを削除することで実現できます。

動的パーティションテーブルの作成

例:1 日あたり 1 つのパーティションを作成します。最新の 7 個の履歴パーティションをホットストレージに動的に保持します。7 日より古い次の 23 個のパーティションをコールドストレージに格納します。この範囲より古いパーティションは削除します。以下のコードがその例です。

BEGIN;
CREATE TABLE tbl2(	
  c1 text not null, 
  c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl2', 'auto_partitioning.enable', 'true');
CALL set_table_property('tbl2', 'auto_partitioning.time_unit', 'DAY');
CALL set_table_property('tbl2', 'auto_partitioning.num_precreate', '3');
CALL set_table_property('tbl2', 'auto_partitioning.num_hot', '7');
CALL set_table_property('tbl2', 'auto_partitioning.num_retention', '30');
COMMIT;

効果を以下の図に示します。

Effect

ストレージポリシーの変更

auto_partitioning.num_hot パラメーターの値を変更することで、ホットストレージのパーティションポリシーを変更できます。ただし、このポリシーを変更しても、すでにコールドストレージにある子パーティションが自動的にホットストレージに移動することはありません。現在日付が 2022 年 7 月 1 日であると仮定して、以下のパーティションテーブルを作成します。

BEGIN;
CREATE TABLE tbl_p(
  c1 text not null,
  c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl_p', 'auto_partitioning.enable', 'true');
CALL set_table_property('tbl_p', 'auto_partitioning.time_unit', 'DAY');
CALL set_table_property('tbl_p', 'auto_partitioning.num_precreate', '3');
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '3');
CALL set_table_property('tbl_p', 'auto_partitioning.num_retention', '10');
COMMIT;

この場合のデータ分布には、以下の 2 つのシナリオが考えられます。

  • シナリオ 1:ホットストレージパーティションポリシーの拡張

    動的管理ポリシーのホットパーティション数を 4 に変更するには、以下のコードを実行します。

    CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '4');

    すでにコールドストレージにある子パーティションは自動的にホットストレージに移動しないため、変更後の効果を以下の図に示します。Example

  • シナリオ 2:パーティションポリシーにおけるホットストレージのカットオフを縮小

    動的管理ポリシーのホットパーティション数を 2 に変更するには、以下のコードを実行します。

    CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '2');

    すでにコールドストレージにある子パーティションは自動的にホットストレージに移動しません。ただし、ホットからコールドに移動する必要のあるデータは移行されます。変更後の効果を以下の図に示します。Example

コールドストレージパーティションテーブルを動的パーティションテーブルに変更する

たとえば、コールドストレージプロパティを持つパーティションテーブルを動的パーティションテーブルに変更し、過去 7 日間のパーティションをホットストレージに設定するには、以下の方法を使用します。

  1. データ準備。

    -- テーブル作成時にストレージポリシーとしてコールドストレージを指定します。
    BEGIN;
    CREATE TABLE tbl2(	
      c1 TEXT NOT NULL, 
      c2 TEXT 
    )
    PARTITION BY LIST(c2);
    CALL set_table_property('tbl2', 'storage_mode', 'cold');
    
    CREATE TABLE tbl2_20230808 PARTITION OF tbl2 FOR VALUES IN('20230808');
    CREATE TABLE tbl2_20230809 PARTITION OF tbl2 FOR VALUES IN('20230809');
    CREATE TABLE tbl2_20230810 PARTITION OF tbl2 FOR VALUES IN('20230810');
    CREATE TABLE tbl2_20230817 PARTITION OF tbl2 FOR VALUES IN('20230817');
    COMMIT;
  2. テーブルを動的パーティションテーブルに変更し、過去 7 日間のパーティションをホットストレージに設定します。

    BEGIN;
    CALL set_table_property('tbl2', 'storage_mode', 'hot'); -- 親テーブルをホットに設定。
    CALL set_table_property('tbl2_20230810', 'storage_mode', 'cold'); -- ホットストレージに移動不要なパーティションをコールドに設定。
    CALL set_table_property('tbl2_20230809', 'storage_mode', 'cold');
    CALL set_table_property('tbl2_20230808', 'storage_mode', 'cold');
    CALL set_table_property('tbl2', 'auto_partitioning.enable', 'true');
    CALL set_table_property('tbl2', 'auto_partitioning.time_unit', 'DAY');
    CALL set_table_property('tbl2', 'auto_partitioning.num_precreate', '3');
    CALL set_table_property('tbl2', 'auto_partitioning.num_hot', '7');
    CALL set_table_property('tbl2', 'auto_partitioning.num_retention', '10');
    COMMIT;

動的パーティションの設定とスケジュール状態の確認

次の SQL 文を実行して、現在のデータベース内の動的パーティションテーブルとその設定情報をクエリします。

SELECT
    nsp_name AS schema_name,
    tbl_name AS table_name,
    ENABLE,
    time_unit,
    time_zone,
    num_precreate,
    num_retention,
    b.usename AS create_user,
    cret_time,
    schd_start_time,
    options
FROM
    hologres.hg_partitioning_config AS a
    LEFT JOIN pg_user AS b ON a.cret_user = b.usesysid;

以下にフィールドを説明します。

フィールド名

説明

schema_name

スキーマ名。

table_name

テーブル名。

ENABLE

動的パーティション管理が有効かどうかを示します。

time_unit

動的パーティションの時間単位。

time_zone

動的パーティションのタイムゾーン。

num_precreate

事前作成するパーティション数。

num_retention

保持する履歴パーティション数。

create_user

ユーザーを作成できます。

cret_time

作成時刻。

schd_start_time

最新のスケジュール時刻。

以下の結果が返されます。

image

子パーティションの作成およびパージログの確認

クエリログには、子パーティションの作成およびパージに関するログは記録されません。次の SQL 文を実行して、これらのログをクエリします。

SELECT                           
    relname,
    relowner,
    schdtime,
    trigtime,
    status,
    message,
    precreate,
    discard
FROM
    hologres.hg_partitioning_log 

上記のフィールド名を以下に説明します。

フィールド名

説明

relname

schema.table

relowner

パーティションテーブルのオーナー。

schdtime

スケジュール時刻。

trigtime

実際のトリガー時刻。

status

ステータス。

message

備考。

precreate

作成された子パーティションの名前。

discard

パージされた子パーティションの名前。

以下の結果が返されます。

image

よくある質問

既存のパーティションテーブルに対して動的パーティションを有効にするにはどうすればよいですか?

次の SQL 文を使用して、既存のパーティションテーブルに対して動的パーティションを有効にできます。

-- Hologres V2.1 以降向けの SQL 例
ALTER TABLE auto_part_old SET (
   auto_partitioning_enable = 'true',
   auto_partitioning_time_unit = 'HOUR',
   auto_partitioning_time_zone = 'PRC',
   auto_partitioning_num_precreate = '4',
   auto_partitioning_num_retention = '-1',
   auto_partitioning_num_hot = '-1'
);

-- すべての Hologres バージョン向けの SQL 例
BEGIN;
CALL set_table_property('auto_part_old', 'auto_partitioning.enable', 'true');
CALL set_table_property('auto_part_old', 'auto_partitioning.time_unit', 'HOUR');
CALL set_table_property('auto_part_old', 'auto_partitioning.time_zone', 'PRC');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_precreate', '4');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_retention', '-1');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_hot', '-1');
COMMIT;
重要

auto_partitioning.time_unit および auto_partitioning.time_zone パラメーターは、動的パーティション機能のコア設定です。Hologres をアップグレードした後、これらのパラメーターは一度しか設定できず、設定後は変更できません。

既存のパーティションテーブルに対して動的パーティションを有効にした後、履歴の子パーティションは自動パージロジックの影響を受けますか?

システムは子パーティションの名前に基づいてパージを実行します。子パーティションの名前が {parent_table}_{time_suffix} の命名規則に一致する場合、パージされます。一致しない場合は、パージされません。

動的パーティションテーブルを作成し、num_precreate を 3 に設定しました。SQL 文を実行した後、親テーブルは正常に作成されましたが、3 つの子パーティションは作成されませんでした。なぜですか?

動的パーティションの初期作成タスクは、デフォルトで 10 分ごとにチェックされます。そのため、子パーティションは 10 分以内に作成されます。しばらくしてから再度確認してください。