皆様、素敵な金曜日をお過ごしください! コース開始までの残り時間はどんどん少なくなっていきます
開発中
PostgreSQL 10 では、古い継承方法では解決できなかった多くの問題を解決するために設計された機能である「宣言的パーティショニング」が誕生しました。 これにより、データを水平方向に分割できる、より強力なツールが誕生しました。
機能の比較
PostgreSQL 11 には、パフォーマンスを向上させ、アプリケーションに対してパーティション分割されたテーブルをより透過的にするのに役立つ一連の印象的な新機能が導入されています。
1. 制限付き例外の使用
2. ノードのみを追加します
3. 非パーティションテーブルを参照するパーティションテーブルの場合のみ
4. インデックスにはパーティションのすべてのキー列が含まれている必要があります
5. 両側のセクション制限は一致する必要があります
Производительность
ここでも良いニュースがあります! 新しいメソッドが追加されました WHERE
。 以前のアルゴリズムでは、各セクションをチェックして条件を満たすかどうかを判断していました。 WHERE
。 その結果、セクションの数が増えると、計画時間もさらに増加しました。
9.6 では、継承によるパーティショニングを使用して、タプルをパーティションにルーティングするのは通常、タプルを正しいパーティションに挿入する一連の IF ステートメントを含むトリガー関数を作成することによって行われていました。 これらの関数の実行は非常に遅くなる可能性があります。 バージョン 10 で追加された宣言的パーティショニングにより、これははるかに高速に動作します。
100 個のパーティションを持つパーティション テーブルを使用すると、10 つの BIGINT 列と 1 つの INT 列を持つテーブルに 5 万行をロードするパフォーマンスを評価できます。
このテーブルをクエリして 1 つのインデックス付きレコードを検索し、DML を実行して XNUMX つのレコードを操作するパフォーマンス (XNUMX つのプロセッサのみを使用):
ここでは、PG 9.6 以降、各操作のパフォーマンスが大幅に向上していることがわかります。 リクエスト SELECT
特にクエリ計画中に複数のパーティションを除外できるものでは、見た目がはるかに良くなります。 これは、スケジューラが以前に行うべきだった多くの作業をスキップできることを意味します。 たとえば、不要なセクションにはパスが構築されなくなりました。
まとめ
テーブルのパーティショニングは、PostgreSQL の非常に強力な機能になり始めています。 これにより、低速で大規模な DML 操作が完了するのを待たずに、データをオンラインで迅速に表示したり、オフラインで表示したりすることができます。。 これは、関連データをまとめて保存できることも意味し、必要なデータにより効率的にアクセスできるようになります。 このバージョンで行われた改善は、これらすべての機能に精力的に取り組んだ開発者、レビュー担当者、コミッターなしでは不可能でした。
彼ら全員のおかげです! PostgreSQL 11 は素晴らしいですね!
ここに非常に短いですが非常に興味深い記事があります。 コメントを共有し、忘れずにサインアップしてください
出所: habr.com