一時パーティション
このトピックでは、一時パーティション機能の使用方法について説明します。
既にパーティションルールが定義されているパーティションテーブルに一時パーティションを作成し、これらの一時パーティションに対して新しいデータ分散戦略を定義できます。一時パーティションは、パーティション内のデータをアトミックに上書きする場合や、パーティションおよびバケッティング戦略を調整する場合に、一時的なデータキャリアとして機能します。一時パーティションでは、特定の要件を満たすために、パーティション範囲、バケット数、レプリカ数、記憶媒体などのデータ分散戦略をリセットできます。
一時パーティション機能は、次のシナリオで使用できます。
-
アトミック上書き操作
パーティション内のデータを再書き込みする必要があり、その過程でデータをクエリできるようにする場合、まず元の正式なパーティションに基づいて一時パーティションを作成し、新しいデータを一時パーティションにロードします。その後、置換操作を使用して、元の正式なパーティションを一時パーティションでアトミックに置き換えることができます。非パーティションテーブルでのアトミック上書き操作については、ALTER TABLE - SWAPを参照してください。
-
パーティションデータクエリの同時実行性の調整
パーティションのバケット数を変更する必要がある場合、元の正式なパーティションと同じパーティション範囲を持つ一時パーティションを作成し、新しいバケット数を指定します。その後、
INSERT INTO
コマンドを使用して、元の正式なパーティションのデータを一時パーティションにロードします。最後に、置換操作を使用して、元の正式なパーティションを一時パーティションでアトミックに置き換えることができます。 -
パーティションルールの変更
パーティション戦略を変更したい場合、例えばパーティションをマージしたり、大きなパーティションを複数の小さなパーティションに分割したりする場合、まず期待されるマージまたは分割範囲を持つ一時パーティションを作成します。その後、
INSERT INTO
コマンドを使用して、元の正式なパーティションのデータを一時パーティションにロードします。最後に、置換操作を使用して、元の正式なパーティションを一時パーティションでアトミックに置き換えることができます。
一時パーティションの作成
ALTER TABLE コマンドを使用して、一度に1つ以上のパーティションを作成できます。
構文
単一の一時パーティションを作成する
ALTER TABLE <table_name>
ADD TEMPORARY PARTITION <temporary_partition_name> VALUES [("value1"), {MAXVALUE|("value2")})]
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
ALTER TABLE <table_name>
ADD TEMPORARY PARTITION <temporary_partition_name> VALUES LESS THAN {MAXVALUE|(<"value">)}
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
一度に複数のパーティションを作成する
ALTER TABLE <table_name>
ADD TEMPORARY PARTITIONS START ("value1") END ("value2") EVERY {(INTERVAL <num> <time_unit>)|<num>}
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
パラメータ
partition_desc
: 一時パーティションのバケット数やプロパティ(レプリカ数や記憶媒体など)を指定します。
例
テーブル site_access
に一時パーティション tp1
を作成し、その範囲を [2020-01-01, 2020-02-01)
と指定します。
ALTER TABLE site_access
ADD TEMPORARY PARTITION tp1 VALUES [("2020-01-01"), ("2020-02-01"));
テーブル site_access
に一時パーティション tp2
を作成し、その上限を 2020-03-01
と指定します。StarRocks は、前の一時パーティションの上限をこの一時パーティションの下限として使用し、左閉右開範囲 [2020-02-01, 2020-03-01)
の一時パーティションを生成します。
ALTER TABLE site_access
ADD TEMPORARY PARTITION tp2 VALUES LESS THAN ("2020-03-01");
テーブル site_access
に一時パーティション tp3
を作成し、その上限を 2020-04-01
と指定し、レプリカ数を 1
と指定します。
ALTER TABLE site_access
ADD TEMPORARY PARTITION tp3 VALUES LESS THAN ("2020-04-01")
("replication_num" = "1")
DISTRIBUTED BY HASH (site_id);
テーブル site_access
に一度に複数のパーティションを作成し、これらのパーティションの範囲を [2020-04-01, 2021-01-01)
とし、月ごとのパーティショングラニュラリティを指定します。
ALTER TABLE site_access
ADD TEMPORARY PARTITIONS START ("2020-04-01") END ("2021-01-01") EVERY (INTERVAL 1 MONTH);
使用上の注意
- 一時パーティションのパーティション列は、元の正式なパーティションのパーティション列と同じでなければならず、変更できません。
- 一時パーティションの名前は、他の正式なパーティションや一時パーティションの名前と同じにすることはできません。
- テーブル内のすべての一時パーティションの範囲は重複してはなりませんが、一時パーティションと正式なパーティションの範囲は重複することができます。