インターバル範囲パーティションは、範囲パーティションの拡張機能です。挿入されるデータが既存のパーティションの範囲を超えた場合に、データベースが自動的にパーティションを作成できます。
前提条件
クラスタのバージョンは PolarDB for MySQL 8.0.2 で、クラスタのリビジョンバージョンは 8.0.2.2.0 以降である必要があります。クラスタのカーネルバージョンの確認方法については、「エンジンバージョンの確認」をご参照ください。
背景情報
範囲パーティションテーブルにデータを挿入する場合、データが既存のパーティションの範囲外にあると、データは挿入されず、エラーが返されます。挿入されるデータがインターバルパーティションテーブルの範囲を超えると、データベースは INTERVAL 句で指定された範囲に基づいて新しいパーティションを自動的に作成できます。
パーティション範囲が 1 か月に設定されていて、挿入されるデータが現在のトランジションポイント(現在のパーティションの最大境界値)から 2 か月後である場合、データの月のパーティションとその月の前の月のパーティションが作成されます。たとえば、インターバル範囲パーティションテーブルを作成します。間隔は 1 か月で、現在のトランジションポイントは 2021 年 9 月 15 日です。2021 年 12 月 10 日のデータを挿入しようとすると、データベースは 2021 年 9 月 15 日から 2021 年 12 月 15 日までの 3 つの期間に対して 3 つのパーティションを自動的に作成します。次に、データは 2021 年 12 月 10 日をカバーする期間のパーティションに挿入されます。
制限事項
インターバル範囲パーティションでは、COLUMNS() は単一のパーティションキーのみを指定でき、これは数値または日付範囲である必要があります。
少なくとも 1 つの範囲パーティションを定義する必要があります。
インターバル範囲パーティションテーブルのパーティションは、昇順でのみ作成できます。
パーティションキーが DATE 型の場合、間隔は TIME 型(HOUR、MINUTE、または SECOND)にすることはできません。パーティションキーが TIME 型の場合、間隔は DATE 型(YEAR、QUARTER、MONTH、WEEK、または DAY)にすることはできません。パーティションキーが SECOND 型の場合、間隔は 60 未満にすることはできません。
INSERT SELECT 文または UPDATE 文を実行してパーティションを追加することはできません。
テーブルの作成時に定義した間隔を変更することはできません。
サブパーティションは、範囲ハッシュパーティションテーブルでのみサポートされています。
LOAD DATA 文を実行してデータをインポートする場合は、パーティションテーブルの現在の範囲がすべてのデータをカバーしていることを確認する必要があります。
トリガー、ストアドファンクション、またはストアドプロシージャを使用して、インターバル範囲パーティションにデータを挿入することはできません。
LOCK TABLES 文はサポートされていません。
パーティションキーは、AUTO_INCREMENT、仮想カラム、生成されたデフォルトカラム、または STRING 型にすることはできません。
カスタムパーティション(テーブル作成文および DDL 文で作成されたものを含む)に _p 文字列をプレフィックスとして付けることはできません。
自動的に作成されたパーティションは、作成後にロールバックできません。
データをバッチで挿入する場合、一度に最大 30 個のパーティションを作成できます。
INSERT 文の実行中に別の DDL 文を実行してパーティションを自動的に作成すると、デッドロックが検出され、エラーが報告される場合があります。
インターバル範囲パーティションは、範囲パーティションの拡張機能です。インターバル範囲パーティションが適用できないシナリオでは、代わりに範囲パーティションを使用してください。
使用方法
| パラメータ | 説明 |
| partition_level_mdl_enabled | インターバル範囲パーティションは、パーティションレベル MDL 機能に基づいて実装されています。利点は、最小記述長(MDL)の粒度が小さいため、DDL 文が DML 文に与える影響を軽減できることです。したがって、インターバル範囲パーティションを使用するには、partition_level_mdl_enabled パラメータが ON に設定されていることを確認する必要があります。このパラメータが OFF に設定されている場合、インターバル範囲パーティションテーブルを作成することはできません。既存のインターバル範囲パーティションテーブルの場合、パーティションの範囲内にある値のみを挿入できます。範囲外の値を挿入すると、エラーが報告されます。 |
| interval_partitioning_enabled | interval_partitioning_enabled パラメータはインターバル範囲パーティション機能を制御し、partition_level_mdl_enabled パラメータはパーティションレベル MDL 機能を制御します。インターバル範囲パーティション機能には、両方のパラメータが必要です。2 つのパラメータは ON に設定する必要があります。interval_partitioning_enabled パラメータが OFF に設定されている場合、インターバル範囲パーティションテーブルを作成することはできません。既存のインターバル範囲パーティションテーブルの場合、パーティションの範囲内にある値のみを挿入できます。範囲外の値を挿入すると、エラーが報告されます。 |
| transaction_isolation | パーティションレベル MDL 機能は、リードコミットまたはリードアンコミットレベルでのみ分離を提供できます。したがって、このパラメータは、パーティションレベル MDL 機能の分離レベルと一致している必要があります。デフォルトでは、クラウドクラスタはリードコミット分離レベルを使用します。 |