メインコンテンツまでスキップ

Dynamic partitioning

動的パーティショニング

StarRocksは、パーティションのTTL(有効期限)を自動的に管理する動的パーティショニングをサポートしています。これにより、テーブルに新しい入力データをパーティション化し、期限が切れたパーティションを削除することができます。この機能により、保守コストを大幅に削減することができます。

動的パーティショニングの有効化

テーブルsite_accessを例に説明します。動的パーティショニングを有効にするには、PROPERTIESパラメータを設定する必要があります。設定項目の詳細については、CREATE TABLEを参照してください。

CREATE TABLE site_access(
event_day DATE,
site_id INT DEFAULT '10',
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT '',
pv BIGINT DEFAULT '0'
)
DUPLICATE KEY(event_day, site_id, city_code, user_name)
PARTITION BY RANGE(event_day)(
PARTITION p20200321 VALUES LESS THAN ("2020-03-22"),
PARTITION p20200322 VALUES LESS THAN ("2020-03-23"),
PARTITION p20200323 VALUES LESS THAN ("2020-03-24"),
PARTITION p20200324 VALUES LESS THAN ("2020-03-25")
)
DISTRIBUTED BY HASH(event_day, site_id)
PROPERTIES(
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-3",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "32",
"dynamic_partition.history_partition_num" = "0"
);

PROPERTIES:

パラメータ

必須

説明

dynamic_partition.enable

いいえ

動的パーティショニングを有効にします。有効な値は、TRUEFALSEです。デフォルト値はTRUEです。

dynamic_partition.time_unit

はい

動的に作成されたパーティションの時間の粒度です。必須パラメーターです。有効な値は、HOURDAYWEEKMONTHYEARです。時間の粒度は、動的に作成されたパーティションの接尾辞形式を決定します。

  • 値がDAYの場合、動的に作成されたパーティションの接尾辞形式はyyyyMMddです。例えば、パーティション名の接尾辞は「20200321」です。
  • 値がWEEKの場合、動的に作成されたパーティションの接尾辞形式はyyyy_wwです。例えば、2020年の13週目は「2020_13」です。
  • 値がMONTHの場合、動的に作成されたパーティションの接尾辞形式はyyyyMMで、例えば「202003」です。
  • 値がYEARの場合、動的に作成されたパーティションの接尾辞形式はyyyyで、例えば「2020」です。

dynamic_partition.time_zone

いいえ

動的パーティションのタイムゾーンです。デフォルトではシステムのタイムゾーンと同じです。

dynamic_partition.start

いいえ

動的パーティションの開始オフセットです。このパラメーターの値は負の整数である必要があります。このオフセットより前のパーティションは、現在の日、週、または月に基づいて削除されます。これはパラメーターdynamic_partition.time_unitの値によって決まります。デフォルト値はInteger.MIN_VALUE(つまり-2147483648)であり、過去のパーティションは削除されません。

dynamic_partition.end

いいえ

動的パーティションの終了オフセットです。このパラメーターの値は正の整数である必要があります。現在の日、週、または月から終了オフセットまでのパーティションが事前に作成されます。

dynamic_partition.prefix

いいえ

動的パーティションの名前に追加される接頭辞です。デフォルト値はpです。

dynamic_partition.buckets

いいえ

動的なパーティションごとのバケットの数です。デフォルト値は、予約語BUCKETSによって決定されるバケットの数と同じです。

dynamic_partition.history_partition_num

いいえ

動的パーティショニングメカニズムによって作成された過去のパーティションの数で、デフォルト値は0です。値が0よりも大きい場合、過去のパーティションは事前に作成されます。v2.5.2以降、StarRocksはこのパラメーターをサポートしています。

dynamic_partition.start_day_of_week

いいえ

dynamic_partition.time_unitWEEKの場合、各週の最初の日を指定するために使用されるパラメーターです。有効な値は「1」から「7」です。「1」は月曜日を意味し、「7」は日曜日を意味します。デフォルト値は「1」で、すべての週は月曜日から開始することを意味します。

dynamic_partition.start_day_of_month

いいえ

dynamic_partition.time_unitMONTHの場合、各月の最初の日を指定するために使用されるパラメーターです。有効な値は「1」から「28」です。「1」は各月の1日を意味し、「28」は各月の28日を意味します。デフォルト値は「1」で、すべての月は1日から開始することを意味します。1日は29日、30日、または31日にすることはできません。

dynamic_partition.replication_num

いいえ

動的に作成されたパーティションのタブレットのレプリカ数です。デフォルト値は、テーブル作成時に設定されたレプリカの数と同じです。

FEの設定:

dynamic_partition_check_interval_seconds: 動的パーティショニングのスケジューリング間隔です。デフォルト値は600秒で、パーティションの状況がPROPERTIESで指定された動的パーティショニング条件を満たしているかどうかを10分ごとにチェックし、満たしていない場合はパーティションを自動的に作成および削除します。

パーティションの表示

テーブルに対して動的パーティションが有効になっている場合、入力データは連続して自動的にパーティション分割されます。以下のステートメントを使用して現在のパーティションを表示することができます。例えば、現在の日付が2020-03-25の場合、2020-03-22から2020-03-28の時間範囲のパーティションのみ表示されます。

SHOW PARTITIONS FROM site_access;

[types: [DATE]; keys: [2020-03-22];types: [DATE]; keys: [2020-03-23]; )
[types: [DATE]; keys: [2020-03-23];types: [DATE]; keys: [2020-03-24]; )
[types: [DATE]; keys: [2020-03-24];types: [DATE]; keys: [2020-03-25]; )
[types: [DATE]; keys: [2020-03-25];types: [DATE]; keys: [2020-03-26]; )
[types: [DATE]; keys: [2020-03-26];types: [DATE]; keys: [2020-03-27]; )
[types: [DATE]; keys: [2020-03-27];types: [DATE]; keys: [2020-03-28]; )
[types: [DATE]; keys: [2020-03-28];types: [DATE]; keys: [2020-03-29]; )

動的パーティショニングのプロパティを変更する

ALTER TABLEステートメントを使用して、動的パーティショニングのプロパティ(例:動的パーティショニングの無効化)を変更することができます。次のステートメントを例に説明します。

ALTER TABLE site_access 
SET("dynamic_partition.enable"="false");

注意:

  • テーブルの動的パーティショニングのプロパティを確認するには、SHOW CREATE TABLEステートメントを実行します。
  • ALTER TABLEステートメントを使用してテーブルの他のプロパティも変更することができます。