PolarDB パーティションテーブルは、ネイティブ MySQL の構文および機能と完全に互換性があります。PolarDB パーティションテーブルは、ネイティブ MySQL よりも高いパフォーマンスを提供し、より多くのパーティションタイプと組み合わせをサポートし、利便性、使いやすさ、および効率性を提供します。
パーティション化は、パーティション化ルールに基づいて、大きな論理テーブルを複数の小さな物理テーブルに分割します。大きな論理テーブルはパーティションテーブルであり、小さな物理テーブルはパーティションです。各パーティションは、ストレージエンジン上のデータとインデックスを個別に編成および管理します。パーティション化ルールには、主に 範囲、リスト、および ハッシュ が含まれます。パーティション化ルールに基づいてデータを異なるパーティションに分散するには、パーティションキーを指定する必要があります。PolarDB では、ハイブリッドパーティションテーブルを作成することで、パーティションに異なるストレージエンジンを使用することもできます。次の図は、サブパーティションテーブル Orders を示しています。
メリット
幅広いパーティションタイプと組み合わせ
範囲、リスト、ハッシュ、および リストデフォルトハッシュ パーティションとそれらの組み合わせがサポートされています。これにより、パーティションテーブルは柔軟なデータガバナンス方法を提供できます。
インターバル範囲 パーティションがサポートされています。これにより、自動パーティションメンテナンスが簡素化されます。
INNODB と OSS を使用した ハイブリッドパーティション化 がサポートされており、コストを削減し、効率を高めることができます。
パーティションベースの HTAP トランザクションとクエリ負荷からのテーブルインデックスに対するさまざまな要件をより適切に満たすために、部分インデックス と グローバルセカンダリインデックス がサポートされています。
パフォーマンスの向上
パーティションプルーニング: データをクエリすると、オプティマイザはクエリ条件とパーティションメタデータに基づいてパーティションを自動的に除外し、データスキャンを削減します。PolarDB は、クエリ効率を向上させるために動的パーティションプルーニング機能もサポートしています。
パーティション単位の結合: パーティションを結合する場合、システムはパーティション条件に基づいてパーティションテーブルをパーティションの結合に分割し、条件を満たさない結合を除外して結合の数を最小限に抑え、クエリ効率を高めます。
統計の収集と管理: パーティションベースの収集と管理は正確で柔軟であるため、より適切なクエリプランを選択できます。
並列クエリは、パーティションベースの大規模テーブルソリューションのパフォーマンスを大幅に向上させます。
データ管理の強化
パーティションのインデックスを作成、削除、および再構築できます。
パーティションのデータをバックアップおよびリストアできます。
コストの削減
パーティションは、データの重要度、データストレージのパフォーマンス、データストレージの信頼性、および データストレージ形式 に基づいて保存できます。
機能の最適化
ネイティブ MySQL と比較して、PolarDB は次の表に示す最適化を提供します。
カテゴリ | 最適化 | 参照 | |
拡張パーティション | すべてのタイプのサブパーティション | HASH および KEY パーティションのサブパーティション化 | 詳細については、「サブパーティション化を使用する場合」をご参照ください。 |
RANGE および LIST サブパーティション | |||
サブパーティションのプルーニング | |||
サブパーティションに対する一部の DDL 操作 | |||
リストデフォルトハッシュパーティション | リストデフォルトハッシュパーティション | 詳細については、「リストデフォルトハッシュ」をご参照ください。 | |
リストデフォルトハッシュパーティションのサブパーティション化 | |||
リストデフォルトサブパーティション | |||
デフォルトハッシュパーティションからリストパーティションを分割するための REORGANIZE PARTITION 文 | |||
リストパーティションをデフォルトハッシュパーティションにマージするための REORGANIZE PARTITION 文 | |||
デフォルトパーティションの数を変更するための REORGANIZE PARTITION 文 | |||
リストデフォルトハッシュパーティションのプルーニング | |||
リストデフォルトハッシュパーティションを追加するための ADD PARTITION 文 | |||
インターバル範囲パーティション | インターバル範囲パーティション | 詳細については、「概要」をご参照ください。 | |
インターバル範囲パーティションのハッシュサブパーティション化 | 詳細については、「インターバル範囲パーティションテーブルを切り替える」をご参照ください。 | ||
パーティション間でプライマリキーと一意キーが一意でない可能性のあるパーティション (UNIQUE CHECK IGNORE) | パーティションテーブルの作成で | 詳細については、「UNIQUE CHECK IGNORE」をご参照ください。 | |
パーティション化されていないテーブルをパーティションテーブルに変換する際に | |||
パーティションインデックス | 部分インデックス | パーティションの部分インデックス | 詳細については、「部分インデックス」をご参照ください。 |
サブパーティションの部分インデックス | |||
パーティションおよびサブパーティションでの ADD、DROP、REBUILD インデックス | |||
部分インデックスのプルーニング | |||
部分インデックスの統計 | |||
ハイブリッドパーティションテーブルの部分インデックス | |||
リストデフォルトハッシュパーティションの部分インデックス | |||
グローバルパーティションインデックス | グローバルセカンダリインデックスの作成と削除 | 詳細については、「GSI」をご参照ください。 | |
テーブルに対する DML およびほとんどの DDL 操作のグローバルセカンダリインデックス | |||
DDL 操作のグローバルセカンダリインデックス | |||
一意のグローバルセカンダリインデックス | |||
クエリ最適化 | クエリ最適化 | 部分的なパーティション単位の結合 | 該当なし |
パーティションの動的プルーニング | |||
パーティションインデックスのプルーニング | |||
HyperLogLog | |||
パーティションテーブル内のパーティションの並列スキャン | |||
グローバルインデックスオプティマイザの選択と並列スキャン | |||
パーティション化と MPP の組み合わせ | |||
パーティションベースの MDL | ADD PARTITION および DROP PARTITION は、パーティションベースの MDL をサポートします | 詳細については、「オンラインパーティションメンテナンス」をご参照ください。 | |
EXCHANGE PARTITION は、パーティションベースの MDL をサポートします | |||
REBUILD PARTITION および REORGANIZE PARTITION は、パーティションベースの MDL をサポートします | |||
サブパーティションは、サブパーティションベースの MDL をサポートします | |||
DDL 操作 | 共通テーブルとパーティションテーブルの DDL 操作 | 共通テーブルをパーティションテーブルに切り替えるための DDL 操作 | 詳細については、「共通テーブルを範囲パーティションテーブルに切り替える」をご参照ください。 |
ハイブリッドパーティション | サポートされているさまざまなタイプのストレージエンジン | 詳細については、「ハイブリッドパーティションテーブルを作成する」をご参照ください。 |
参照
詳細については、「パーティションテーブルのタイプ」をご参照ください。
詳細については、「パーティション化ポリシーを選択する」をご参照ください。