PostgreSQL 11: Postgres 9.6 から Postgres 11 へのパーティショニングの進化

皆様、素敵な金曜日をお過ごしください! コース開始までの残り時間はどんどん少なくなっていきます 「リレーショナルDBMS」, そこで今日は、このトピックに関する別の役立つ資料の翻訳を共有します。

開発中 PostgreSQL 11 テーブルのパーティショニングを改善するために、いくつかの素晴らしい取り組みが行われてきました。 テーブルのパーティショニング - これは PostgreSQL にかなり長い間存在していた機能ですが、いわば、バージョン 10 までは本質的に存在せず、バージョン XNUMX では非常に便利な機能になりました。 以前、テーブルの継承がパーティショニングの実装であると述べましたが、これは真実です。 この方法だけでは、ほとんどの作業を手動で行う必要がありました。 たとえば、INSERT 中にタプルをセクションに挿入したい場合は、これを行うようにトリガーを構成する必要があります。 継承によるパーティショニングは非常に遅く、その上に追加機能を開発するのは困難でした。

PostgreSQL 10 では、古い継承方法では解決できなかった多くの問題を解決するために設計された機能である「宣言的パーティショニング」が誕生しました。 これにより、データを水平方向に分割できる、より強力なツールが誕生しました。

機能の比較

PostgreSQL 11 には、パフォーマンスを向上させ、アプリケーションに対してパーティション分割されたテーブルをより透過的にするのに役立つ一連の印象的な新機能が導入されています。

PostgreSQL 11: Postgres 9.6 から Postgres 11 へのパーティショニングの進化
PostgreSQL 11: Postgres 9.6 から Postgres 11 へのパーティショニングの進化
PostgreSQL 11: Postgres 9.6 から Postgres 11 へのパーティショニングの進化
1. 制限付き例外の使用
2. ノードのみを追加します
3. 非パーティションテーブルを参照するパーティションテーブルの場合のみ
4. インデックスにはパーティションのすべてのキー列が含まれている必要があります
5. 両側のセクション制限は一致する必要があります

Производительность

ここでも良いニュースがあります! 新しいメソッドが追加されました セクションの削除。 この新しいアルゴリズムは、クエリ条件を見て適切なセクションを決定できます。 WHERE。 以前のアルゴリズムでは、各セクションをチェックして条件を満たすかどうかを判断していました。 WHERE。 その結果、セクションの数が増えると、計画時間もさらに増加し​​ました。

9.6 では、継承によるパーティショニングを使用して、タプルをパーティションにルーティングするのは通常、タプルを正しいパーティションに挿入する一連の IF ステートメントを含むトリガー関数を作成することによって行われていました。 これらの関数の実行は非常に遅くなる可能性があります。 バージョン 10 で追加された宣言的パーティショニングにより、これははるかに高速に動作します。

100 個のパーティションを持つパーティション テーブルを使用すると、10 つの BIGINT 列と 1 つの INT 列を持つテーブルに 5 万行をロードするパフォーマンスを評価できます。

PostgreSQL 11: Postgres 9.6 から Postgres 11 へのパーティショニングの進化

このテーブルをクエリして 1 つのインデックス付きレコードを検索し、DML を実行して XNUMX つのレコードを操作するパフォーマンス (XNUMX つのプロセッサのみを使用):

PostgreSQL 11: Postgres 9.6 から Postgres 11 へのパーティショニングの進化

ここでは、PG 9.6 以降、各操作のパフォーマンスが大幅に向上していることがわかります。 リクエスト SELECT 特にクエリ計画中に複数のパーティションを除外できるものでは、見た目がはるかに良くなります。 これは、スケジューラが以前に行うべきだった多くの作業をスキップできることを意味します。 たとえば、不要なセクションにはパスが構築されなくなりました。

まとめ

テーブルのパーティショニングは、PostgreSQL の非常に強力な機能になり始めています。 これにより、低速で大規模な DML 操作が完了するのを待たずに、データをオンラインで迅速に表示したり、オフラインで表示したりすることができます。。 これは、関連データをまとめて保存できることも意味し、必要なデータにより効率的にアクセスできるようになります。 このバージョンで行われた改善は、これらすべての機能に精力的に取り組んだ開発者、レビュー担当者、コミッターなしでは不可能でした。
彼ら全員のおかげです! PostgreSQL 11 は素晴らしいですね!

ここに非常に短いですが非常に興味深い記事があります。 コメントを共有し、忘れずにサインアップしてください オープンデーその中で、コースプログラムの詳細が説明されます。

出所: habr.com

コメントを追加します