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