間隔範囲分割は、範囲分割の拡張である。 これにより、挿入されるデータが既存のパーティションの範囲を超えると、データベースは自動的にパーティションを作成できます。
前提条件
クラスターのバージョンはPolarDB for MySQL 8.0.2で、クラスターのリビジョンバージョンは8.0.2.2.0以降である必要があります。 クラスターのカーネルバージョンを表示する方法については、「エンジンバージョンの照会」をご参照ください。
背景情報
レンジパーティションテーブルにデータを挿入すると、データが既存のパーティションの範囲を超えている場合、データを挿入できず、エラーが返されます。 挿入するデータがinterval partitionedテーブルの範囲を超えると、データベースは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文字列を使用することはできません。
- 自動的に作成されたパーティションは、作成後にロールバックできません。
- INSERTステートメントの実行中に別のDDLステートメントを実行してパーティションを自動的に作成すると、デッドロックが検出され、エラーが報告されます。
Usage
次のパラメーターを設定して、間隔範囲のパーティション分割を有効または設定できます。
パラメーター | 説明 |
partition_level_mdl_enabled | 間隔範囲分割は、パーティションレベルMDL機能に基づいて実装されます。 利点は、最小記述長 (MDL) の粒度が小さいほど、DMLステートメントに対するDDLステートメントの影響を減らすことができることです。 したがって、間隔範囲パーティショニングを使用するには、partition_level_mdl_enabledパラメーターをONに設定する必要があります。 このパラメーターがOFFに設定されている場合、間隔範囲パーティションテーブルは作成できません。 既存の間隔範囲パーティション分割テーブルでは、パーティションの範囲内にある値のみを挿入できます。 範囲を超えて値を挿入すると、エラーが報告されます。 |
interval_partitioning_enabled | interval_partitioning_enabledパラメーターはInterval rangeパーティショニング機能を制御し、partition_level_mdl_enabledパラメーターはパーティションレベルMDL機能を制御します。 両方のパラメータは、間隔範囲分割機能に必要です。 2つのパラメータをONに設定する必要があります。 interval_partitioning_enabledパラメーターがOFFに設定されている場合、間隔範囲パーティションテーブルは作成できません。 既存の間隔範囲パーティション分割テーブルでは、パーティションの範囲内にある値のみを挿入できます。 範囲を超えて値を挿入すると、エラーが報告されます。 |
transaction_isolation | パーティションレベルのMDL機能は、読み取りコミットレベルまたは読み取り非コミットレベルでのみ分離できます。 したがって、このパラメーターは、パーティションレベルMDL機能の分離レベルと一致している必要があります。 デフォルトでは、クラウドクラスターは読み取りコミットされた分離レベルを使用します。 |