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

Hologres:論理パーティションテーブルの変更

最終更新日:Jun 05, 2025

Hologres V3.1 以降、論理パーティションテーブルがサポートされています。このトピックでは、ALTER LOGICAL PARTITION TABLE 文を使用して論理パーティションテーブルの構成を変更する方法について説明します。

論理パーティションテーブルの変更

Hologres は ALTER TABLE 構文をサポートしています。パーティション化されていないテーブルに対する ALTER TABLE の使用方法の詳細については、「ALTER TABLE」をご参照ください。物理テーブルと同様に、論理パーティションテーブルも ALTER TABLE 構文をサポートし、パーティション化されていないテーブルのすべての ALTER TABLE 機能を備えています。さらに、論理パーティションテーブルは、パーティションごとにパーティションプロパティの変更をサポートしています。論理パーティションテーブルとパーティションプロパティの詳細については、「テーブルプロパティの説明」および「パーティションプロパティの説明」をご参照ください。

テーブルプロパティの変更

ALTER TABLE <table_name> SET (<property_name> = <property_value> [, ...]);

テーブルプロパティのリセット

ALTER TABLE <table_name> RESET (<property_name> [, ...]);

パーティションプロパティの変更

ALTER TABLE <table_name> PARTITION(<partition_key> = '<partition_value>') [...] SET (<property_name> = <property_value> [, ...]);

パーティションプロパティのリセット

ALTER TABLE <table_name> PARTITION(<partition_key> = '<partition_value>') [...] RESET (<property_name> [, ...]);
説明

物理パーティションテーブルと比較して、論理パーティションテーブルはパーティションの作成を必要としません。また、ALTER TABLE 構文を使用してパーティションをアタッチまたはデタッチする必要もありません。

データの準備

-- 論理パーティションテーブルを作成します。
CREATE TABLE public.hologres_logical_parent_1 (
    a TEXT,
    b INT,
    c TIMESTAMP,
    ds DATE NOT NULL,
    PRIMARY KEY (b, ds)) 
LOGICAL PARTITION BY LIST (ds) 
WITH (
    orientation = 'column',
    distribution_key = 'b',
    partition_expiration_time = '30 day', 
    partition_keep_hot_window = '15 day', 
    partition_require_filter = TRUE,
    binlog_level = 'replica',
    partition_generate_binlog_window = '3 day'
);

-- データを挿入します。
INSERT INTO public.hologres_logical_parent_1 
VALUES 
    ('a', 1, '2025-03-16 10:00:00', '2025-03-16'), 
    ('b', 2, '2025-03-17 11:00:00', '2025-03-17');

論理パーティションテーブルのテーブルプロパティの変更

ALTER TABLE public.hologres_logical_parent_1 
SET (
    partition_expiration_time = '60 day', 
    partition_keep_hot_window = '30 day', 
    partition_require_filter = FALSE);

論理パーティションテーブルの複数パーティションのパーティションプロパティの変更

ALTER TABLE public.hologres_logical_parent_1 
PARTITION (ds = '2025-03-16') PARTITION (ds = '2025-03-17')
SET (
    keep_alive = TRUE, 
    storage_mode = 'hot');