OceanBaseデータベースでは、パーティションとは、一定のルールに基づいてテーブルを複数のより小さく、管理しやすい部分に分割することです。各パーティションは独立したオブジェクトであり、独自の名前とオプションのストレージ特性を持ちます。この章では、主にパーティションの関連概念およびパーティションの使用による利点について説明します。
データベースにアクセスするアプリケーションから見ると、論理的には1つのテーブルまたは1つのインデックスにアクセスしているように見えますが、実際にはそのテーブルが数十個の物理パーティションオブジェクトで構成されている可能性があります。各パーティションは独立したオブジェクトであり、単独でアクセスを処理することも、テーブルの一部としてアクセスを処理することもできます。パーティションはアプリケーションに対して完全に透過的であり、アプリケーションの業務ロジックに影響を与えません。
アプリケーションの観点から見ると、存在するのは1つのSchemaオブジェクトだけです。パーティションテーブルにアクセスする際にSQLステートメントを変更する必要はありません。パーティションは、特に大量のデータを扱うアプリケーションなど、多様なタイプのデータベースアプリケーションに非常に有用です。
パーティションを使用する利点は以下の通りです:
可用性の向上
パーティションが利用不可であっても、そのオブジェクト自体が利用不可という意味ではありません。クエリオプティマイザーは、参照されていないパーティションを自動的にクエリ計画から削除します。したがって、パーティションが利用不可の場合でも、クエリは影響を受けません。
オブジェクトの管理が容易になる
パーティションオブジェクトは、集団的または個別的に管理できる断片を持っています。DDLステートメントは、テーブル全体やインデックス全体ではなく、パーティション単位で操作できます。そのため、インデックスやテーブルの再構築などのリソース集約型タスクを分割して実行できます。例えば、一度に1つのパーティションのみを移動することができます。問題が発生した場合でも、テーブル全体を移動するのではなく、パーティションの移動をやり直すだけで済みます。さらに、パーティションに対して
TRUNCATE操作を実行することで、大量のデータをDELETEすることによる負荷を回避できます。OLTPシステムにおける共有リソースの競合の低減
TPシナリオにおいて、パーティションは共有リソースの競合を低減できます。例えば、DMLは1つのテーブルではなく、複数のパーティションに分散されます。
データウェアハウスにおけるクエリ性能の向上
APシナリオにおいて、パーティションは即時クエリの処理速度を向上させることができます。パーティションキーには自然なフィルタリング機能があります。例えば、1四半期分の販売データを照会する場合、販売データが販売日時でパーティション化されていれば、テーブル全体ではなく、1つまたは数つのパーティションのみを照会すれば済みます。
より優れたロードバランシング効果の提供
OceanBaseデータベースにおけるストレージ単位およびロードバランシング単位は、いずれもパーティションです。異なるパーティションは異なるノードに保存することができます。したがって、パーティションテーブルは異なるパーティションを異なるノードに配置することで、テーブルのデータをクラスタ全体に比較的均等に分散させることができます。