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