Database Compatibility Table Partitioning Guide

パーティション化されたテーブルでは、論理的にラージ1つのテーブルが小さな物理的断片に分割されます。パーティション化にはいくつかの利点があります。

  • クエリのパフォーマンスは、特定の状況、特にテーブルの頻繁にアクセスされる行のほとんどが単一のパーティションまたは少数のパーティションにある場合に劇的に改善できます。パーティション化により、インデックスの前からパーティション列を省略できるため、インデックスサイズが小さくなり、インデックスの頻繁に使用される部分がメモリに収まる可能性が高くなります。

  • クエリーまたは更新が単一のパーティションのラージ部分にアクセスする場合、インデックスおよびテーブル全体に散在するランダムアクセス読み取りを使用する代わりに、サーバーがパーティションのシーケンシャルスキャンを実行するため、パフォーマンスが向上する場合があります。

  • パーティショニングのデザインにその要件を計画している場合、パーティションを追加または削除することにより、バルクロード(またはアンロード)を実装できます。 ALTER TABLEは、一括オペレーションよりもはるかに高速です。また、バルクDELETEに起因するVACUUMのオーバーヘッドを完全に回避します。

  • あまり使用されないデータは、安価な(または低速の)ストレージメディアに移行できます。

テーブルのパーティショニングは、テーブルが非常にラージ場合にのみ価値があります。テーブルがパーティショニングの恩恵を受ける正確なポイントは、アプリケーションによって異なります。ルールとして、テーブルのサイズはデータベースサーバの物理的メモリを超える必要があります。

このドキュメントでは、 Advanced Serverでサポートされているオラクルデータベースと互換性のあるテーブルパーティショニングの側面について説明します。

PostgreSQLこのドキュメント、特にこの章で説明するパーティショニングパーティショニングは、 PostgreSQLバージョン10で導入された宣言Advanced Serverパーティショニング機能については説明していませオラクル。この章で説明するデータベース。宣言的パーティショニングの詳細については、次のURLで入手可能なPostgreSQLコア文書を参照してください。< https://www.postgresql.org/docs/current/ 静的/ddl-partitioning.html >

PostgreSQL 9.6 INSERT... ON CONFLICT DO NOTHING/UPDATE句(一般にUPSERTとして知られています)は、Oracleスタイルのテーブルパーティションではサポートされていません。 INSERTコマンドを呼び出してパーティションテーブルにデータを追加するときにON CONFLICT DO NOTHING/UPDATE句を含めると、サーバーはエラーを結果ます。

!!! Note * Advanced Serverはグローバルインデックスをサポートしていないため、パーティションキー列を含まないプライマリキーがパーティションテーブルに定義されている場合、インデックスは継承されません。ただし、CREATE TABLE内で定義されたすべてのパーティションには、列に独立したプライマリインデックスがあります。 ALTER TABLE ... ADD CONSTRAINTを使用して、新しく追加されたすべてのパーティションでプライマリキーを再作成できます。このプライマリインデックスは、パーティション階層全体ではなく各パーティション内でのみ一意性を適用します(基本的に、2つ以上のパーティションのプライマリインデックス列に対して同じ値を繰り返すことができます)。