すべてのプロダクト
Search
ドキュメントセンター

PolarDB:AUTOモードPolarDB-Xデータベースのパーティション化されたテーブル

最終更新日:Feb 19, 2025

このトピックでは、PolarDB-Xパーティションテーブルとは何か、その利点、およびMySQLパーティションテーブルとの違いについて説明します。

AUTOモードのPolarDB-Xデータベースでは、大量のデータを含む論理テーブルは、特定のパーティショニングルールに基づいて複数の小さな物理テーブルに分割されます。 論理テーブルは区分テーブルと呼ばれ、より小さな各物理テーブルは、より大きなテーブルの区分と呼ばれる。 PolarDB-Xは、KEY、HASH、RANGE、LIST、COHASHなどのテーブルを分割するためのさまざまなルールを提供します。 これらのルールは、レベル2のハイブリッド分割ルールとして機能するように柔軟に組み合わせることもできます。 これにより、効率的なデータ管理が可能になるだけでなく、パーティショニングルールとMySQLのパーティショニング構文との互換性が高くなり、ユーザーに便利で馴染みのある操作体験を提供します。

PolarDB-Xには、パーティション分割、マージ、データ移行、スケジューリングなど、便利なO&Mおよび管理のための一連の機能も用意されています。 ユーザーはデータを柔軟かつ効率的に管理できます。 たとえば、特定のパーティションのデータを独立したストレージノードに分離したり、大きなパーティションをより小さなサブパーティションにさらに分割したりできます。

メリット

  • RANGE、RANGE COLUMN、KEY、LIST、LIST COLUMN、およびCOHASHパーティショニングルール、およびレベル2テンプレートまたは非テンプレートパーティションのこれらのパーティショニングルールの任意の組み合わせをサポートします。 これにより、データガバナンスがより柔軟になります。

  • グローバルセカンダリインデックス (GSI) をサポートします。 GSIは、異なるディメンションで行われるクエリのインデックス作成を容易にします。

  • パーティションのプルーニングをサポートします。これにより、オプティマイザは指定されたクエリ条件を満たさないパーティションを除外できます。 これにより、クエリ中にスキャンされるパーティションが少なくなり、エンジンの作業負荷が軽減されます。

  • PartitionWiseの参加をサポートします。 この機能により、クエリの負荷が大幅に軽減され、クエリのパフォーマンスが向上します。 これは、パーティションテーブルをパーティションリンクに抽象化し、パーティション化基準を満たさないパーティションを効率的に除外することによって達成されます。

  • 並列クエリをサポートします。これにより、大きなパーティションテーブルのクエリパフォーマンスが複数回向上します。

  • 柔軟なパーティションスケジューリングをサポートし、パーティションベースのデータ分離を簡素化します。

MySQLパーティションテーブルとの比較

項目

PolarDB-Xパーティションテーブル

MySQLパーティションテーブル

パーティションの場所

パーティションは自動的に異なるデータノードに分散され、単一ノードのリソースボトルネックを解消します。

すべてのパーティションはプライマリノードに存在し、その上のリソースを共有します。

サポートされるパーティション分割ルール

  • ハッシュ /キー

  • RANGE/RANGE COLUMNS

  • リスト /リストコラム

  • CO_HASH (PolarDB-X専用)

  • ハッシュ /キー

  • RANGE/RANGE COLUMNS

  • リスト /リストコラム

サポートされるパーティション分割関数

詳細については、「パーティション関数」をご参照ください。

関数を使用して、HAHS、RANGE、またはLISTルールを表現できます。

PolarDB-XとMySQLの両方で使用できる関数を次の項目に示します。

  • YEAR

  • MONTH

  • TO_DAYS

  • TO_SECONDS

  • UNIX_TIMESTAMP

  • デイオフウィーク

  • DAYOFMONTH

  • DAYOFYEAR

PolarDB-Xでのみ使用できる関数を次に示します。

  • TO_MONTHS

  • TO_WEEKS

  • SUBSTR/SUBSTRING (標準のMySQL関数については、「MySQL SUBSTR」をご参照ください。)

  • RIGHT (標準のMySQL関数については、「MySQL RIGHT」をご参照ください。)

  • LEFT (標準のMySQL関数については、「MySQL LEFT」をご参照ください。)

関数を使用して、HAHS、RANGE、またはLISTパーティション分割ルールを表すことができます。 MySQLテーブルのパーティション化に使用できる関数については、「関数に関するパーティション化の制限」をご参照ください。

MySQLは、SUBSTRSUBSTRINGRIGHTLEFTなどの文字タイプの入力を使用するパーティショニング関数をサポートしていません。

ハッシュ分割ルール

HASH

  • コンシステントハッシュルーティングアルゴリズムを使用します。

  • [partition By Hash(a、b)] などのベクターパーティションキー列をサポートします。 詳細については、「HASHパーティショニング」をご参照ください。

  • モジュラーハッシュルーティングアルゴリズムを使用します。

  • [partition By Hash(a,b)] などのベクターパーティションキー列はサポートされていません。

キー

  • コンシステントハッシュルーティングアルゴリズムを使用します。

  • ベクトルパーティションキー列をサポートします。 デフォルトでは、最初の列がルート計算に使用されます。 詳細については、「KEYパーティショニング」をご参照ください。

  • ホットデータ配信をサポートします。

  • プレフィックスを持つパーティションキー列の等しい条件に基づくパーティションプルーニングをサポートします。

  • モジュラーハッシュルーティングアルゴリズムを使用します。

  • ベクトルパーティションキー列をサポートします。 すべての列はルート計算に使用されます。

  • ホットデータ配信をサポートしていません。

  • プレフィックスを持つパーティションキー列の等しい条件に基づくパーティションプルーニングはサポートされていません。 パーティションキー列を持つすべての等しい条件は、パーティションプルーニングに使用する必要があります。

CO_HASH

  • このルールはPolarDB-X専用です。 詳細については、「CO_HASHパーティショニング」をご参照ください。

  • 同時に2つ以上のパーティションキー列による水平方向のパーティション分割をサポートします。

  • すべてのパーティションキー列に対する同等のクエリのパーティションプルーニングをサポートします。

CO_HASHはサポートされていません。

範囲分割ルール

RANGE

right/left/substrなどの文字タイプの入力を使用するパーティション関数をサポートします。 詳細については、「RANGEパーティショニング」をご参照ください。

right/left/substrなどの文字型の入力を使用するパーティション関数はサポートされていません。

レンジコラム

デフォルトでは、パーティション定義用に最大5つのパーティションキー列をサポートします。 パラメータは調整できます。 詳細については、「RANGE COLUMNSパーティショニング」をご参照ください。

パーティションキー列の数は制限されません。

リスト分割ルール

リスト

  • デフォルトパーティションの定義をサポートします。

  • 文字タイプのパーティションキー列をサポートします。

  • RIGHT、LEFT、SUBSTRなどの文字型の入力を使用するパーティション関数をサポートします。

  • 分割値セットの個別の変更をサポートします。

  • 詳細については、「LISTパーティション分割」をご参照ください。

  • デフォルトパーティションの定義はサポートしていません。

  • 文字型のパーティションキー列はサポートされていません。

  • RIGHT、LEFT、SUBSTRなどの文字型の入力を使用するパーティション関数はサポートされていません。

  • 分割値セットの個別の変更はサポートされていません。

リストCOLUNNS

  • デフォルトパーティションの定義をサポートします。

  • 分割値セットの個別の変更をサポートします。

  • 詳細については、「LIST COLUMNSパーティショニング」をご参照ください。

  • デフォルトパーティションの定義はサポートしていません。

  • 分割値セットの個別の変更はサポートされていません。

二次パーティション分割ルール

ハイブリッドルール

最大49のハイブリッドルールは、7つの正规法レベル1分割ルールとレベル2分割ルールに基づいて使用できます。

  • HASHおよびKEY分割ルールを使用して、レベル2分割ルールを定義することはできません。

  • RANGE、RANGE COLUMNS、LIST、LIST COLUMNSの4つのパーティショニングルールを使用して、レベル2のパーティショニングルールを定義できます。 レベル2の分割ルールは、HASHまたはKEYルールでなければなりません。

  • ハイブリッド分割規則の数は8である。

テンプレート化および非テンプレート化

すべてのハイブリッドルールは、テンプレートまたは非テンプレートとして使用できます。 詳細は、「二次パーティション分割」をご参照ください。

  • すべてのハイブリッドルールは、レベル2のパーティショニングテンプレートとしてのみ使用できます。

  • テンプレート化されていないレベル2パーティショニングルールはサポートされていません。

ロケーション分布

  • パーティションレベルのローカリティがサポートされています。

  • レベル2パーティションのローカリティ定義を指定して、単一のレベル2パーティションの物理的な場所の分布を制御できます。

  • レベル1パーティションのローカリティ定義を指定して、各レベル1パーティションの下のレベル2パーティションの物理的な場所の分布を制御できます。 たとえば、レベル1パーティションのすべてのレベル2パーティションを同じデータノードに配布できます。

パーティションレベルのローカリティはサポートされていません。

パーティションレベルの変更

  • PolarDB-Xパーティションテーブル (レベル2パーティションを含む) は、パーティション定義で次の操作をサポートします。

    • パーティションを複数のパーティションに分割する

    • パーティションの結合Merge partitions

    • パーティションの移行

    • パーティションの追加

    • パーティションの削除

    • パーティションの変更

    • パーティションの再編成

    • パーティションをクリアする

    • パーティションの名前変更

  • すべてのパーティションO&M変更は、テーブルをロックしないオンラインDDL操作です。

パーティションMySQLテーブルは、パーティション定義に対する次の変更をサポートします。

  • パーティションの結合Merge partitions

  • パーティションの再編成

  • パーティションの追加

  • パーティションの削除

  • パーティションをクリアする

  • Exchangeパーティション

ほとんどのパーティションレベルでは、ロックテーブルが変更されます。

パーティション化されたテーブルの再定義

  • パーティションテーブル、非パーティションテーブル、ブロードキャストテーブル間のオンラインデータ交換をサポートします。 ただし、データは移行する必要があります。

  • 再定義は、テーブルをロックしないオンラインDDL操作です。

  • パーティションの削除を使用して、パーティション分割されたテーブルと元のパーティション分割されていないテーブルを切り替えることができます。

  • 再定義はテーブルをロックします。

パーティションキー列の制約

PolarDB-Xでは、パーティションテーブルでは、プライマリキーと一意のキーがすべてのパーティションキー列 (レベル1パーティションとレベル2パーティションを含む) を含む必要はありません。

MySQLでは、パーティションテーブルでは、すべてのパーティションキー列 (レベル1パーティションとレベル2パーティションを含む) を含むプライマリキーと一意のキーが必要です。

グローバルインデックス

  • グローバルインデックステーブルのパーティションテーブル定義をサポートします。

  • グローバルインデックステーブルのパーティションの個別のO&M変更をサポートします。

グローバルインデックスはサポートされていません。