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つ以上のパーティションのプライマリインデックス列に対して同じ値を繰り返すことができます)。
- Selecting a Partition Type
- Using Partition Pruning
- Partitioning Commands Compatible with Oracle Databases
- CREATE TABLE…PARTITION BY
- Example - PARTITION BY LIST
- Example - AUTOMATIC LIST PARTITION
- Example - PARTITION BY RANGE
- Example - INTERVAL RANGE PARTITION
- Example - PARTITION BY HASH
- Example - PARTITION BY HASH…PARTITIONS num…
- Example - PARTITION BY RANGE, SUBPARTITION BY LIST
- Example - CREATING UNIQUE INDEX on PARTITION TABLE
- Example - CREATING SUBPARTITION TEMPLATE
- ALTER TABLE…ADD PARTITION
- ALTER TABLE…ADD SUBPARTITION
- ALTER TABLE…SPLIT PARTITION
- ALTER TABLE…SPLIT SUBPARTITION
- ALTER TABLE…EXCHANGE PARTITION
- ALTER TABLE…MOVE PARTITION
- ALTER TABLE…RENAME PARTITION
- ALTER TABLE…SET INTERVAL
- ALTER TABLE…SET [ PARTITIONING ] AUTOMATIC
- ALTER TABLE…SET SUBPARTITION TEMPLATE
- DROP TABLE
- ALTER TABLE…DROP PARTITION
- ALTER TABLE…DROP SUBPARTITION
- TRUNCATE TABLE
- ALTER TABLE…TRUNCATE PARTITION
- ALTER TABLE…TRUNCATE SUBPARTITION
- Accessing a PARTITION or SUBPARTITION
- CREATE TABLE…PARTITION BY
- Handling Stray Values in a LIST or RANGE Partitioned Table
- Specifying Multiple Partitioning Keys in a RANGE Partitioned Table
- Retrieving Information about a Partitioned Table