式パーティショニング (推奨)
v3.0以降、StarRocksは式パーティショニング(以前は自動パーティショニングとして知られていました)をサポートしており、より柔軟でユーザーフレンドリーです。このパーティショニング方法は、連続する時間範囲やENUM値に基づいてデータをクエリおよび管理するなど、ほとんどのシナリオに適しています。
テーブル作成時にシンプルなパーティション式を指定するだけで済みます。データロード中、StarRocksはデータとパーティション式で定義されたルールに基づいて自動的にパーティションを作成します。テーブル作成時に多数のパーティションを手動で作成したり、動的パーティションプロパティを設定したりする必要はなくなります。
v3.4以降、式パーティショニングはすべてのパーティショニング戦略を統合し、より複雑なソリューションをサポートするようにさらに最適化されています。ほとんどのケースで推奨され、将来のリリースでは他のパーティショニング戦略に置き換わる予定です。
v3.5以降、StarRocksはストレージ効率とクエリパフォーマンスを最適化するために、時間関数に基づいた式パーティションのマージをサポートしています。詳細については、以下を参照してください。式パーティションのマージ。
シンプルな時間関数式に基づいたパーティショニング
連続する時間範囲に基づいてデータを頻繁にクエリおよび管理する場合、日付型(DATE または DATETIME)の列をパーティション列として指定し、時間関数式でパーティションの粒度として年、月、日、または時間を指定するだけで済みます。StarRocksは、ロードされたデータとパーティション式に基づいて、自動的にパーティションを作成し、パーティションの開始日と終了日または日時を設定します。
ただし、履歴データを月ごとにパーティション分割し、最近のデータを日ごとにパーティション分割するなど、一部の特殊なシナリオでは、以下を使用する必要があります。範囲パーティショニング を使用してパーティションを作成します。
PARTITION BY date_trunc(column) と PARTITION BY time_slice(column) は、式パーティショニングの形式であるにもかかわらず、範囲パーティショニングと見なされます。したがって、ALTER TABLE ... ADD PARTITION ステートメントを範囲パーティションに使用して、そのようなパーティショニング戦略を使用するテーブルに新しいパーティションを追加できます。
構文
PARTITION BY expression
...
[ PROPERTIES( { 'partition_live_number' = 'xxx' | 'partition_retention_condition' = 'expr' } ) ]
expression ::=
{ date_trunc ( <time_unit> , <partition_column> ) |
time_slice ( <partition_column> , INTERVAL <N> <time_unit> [ , boundary ] ) }
パラメータ
expression
必須: はい
説明: を使用するシンプルな時間関数式date_trunc または time_slice 関数。time_slice 関数を使用する場合、boundary パラメータを渡す必要はありません。このシナリオでは、このパラメータのデフォルトの有効な値は floor であり、値は ceil にはならないためです。
time_unit
必須: はい
説明: パーティションの粒度。hour、day、week、month、または year のいずれかです。パーティションの粒度が hour の場合、パーティション列は DATETIME データ型である必要があり、DATE データ型であってはなりません。