- PostgreSQL 16 では、クエリ並列性、大量データのロード、論理レプリケーションが大幅に改善され、性能が向上
- より多くの SQL/JSON 構文、ワークロード向けの新しい監視統計、そしてアクセス制御ルールを定義するためのより高い柔軟性を導入
性能改善
- クエリプランナーは FULL JOIN と RIGHT JOIN を並列化できるようになり、DISTINCT または ORDER BY 句を使用するクエリに対してより最適化されたプランを生成し、SELECT DISTINCT クエリで増分ソートを活用し、ウィンドウ関数を最適化
- 単一および同時実行ワークロードにおける COPY を使ったバルクロードが改善され、一部のケースでは性能が最大 300% 向上
- x86 および ARM アーキテクチャで SIMD を用いた CPU アクセラレーションを導入し、ASCII および JSON 文字列処理、配列およびサブトランザクション検索時の性能を向上
論理レプリケーション
- これにより待機系(Standby)インスタンスで論理レプリケーションを実行できるようになり、新しいワークロード分散オプションが可能に
- 多忙なプライマリの代わりにスタンバイを使って変更をダウンストリームへレプリケーション
- 論理レプリケーションの性能も向上
- Subscriber が並列ワーカーを使って大規模トランザクションを適用可能
- プライマリキーのないテーブルでは、シーケンシャルスキャンの代わりに B-tree インデックスを使用して行を検索可能
- 特定条件ではバイナリ形式を使用して初期テーブル同期の速度を向上可能
開発者体験
- SQL/JSON 標準にさらに多くの構文を追加し、JSON_ARRAY()、JSON_ARRAYAGG()、IS JSON などのコンストラクタと述語を含む
- 桁区切りの数値でアンダースコアを使用可能 (5_432_000)
- psql に \bind が追加され、パラメータを含むクエリを記述して変数に置換可能
- テキストソートのサポートを改善
モニタリング
- I/O アクセスパターンを詳細に分析できるメトリクスを提供する
pg_stat_io を追加
pg_stat_all_tables ビューに、テーブルまたはインデックスが最後にスキャンされた時刻を記録するタイムスタンプフィールドを追加
- パラメータ化された文に渡された値をログ出力し、
auto_explain をより読みやすく
アクセス制御とセキュリティ
- アクセス制御に対してより細かなオプションを提供
- pg_hba.conf および pg_ident.conf ファイルの管理、ならびに複数のセキュリティ指向クライアント接続パラメータの追加を含む、その他のセキュリティ機能を強化
1件のコメント
Hacker News の意見
\\bindが導入されており、これによってアプリケーションが行うのと同じようなパラメータ化クエリを実行できるため、人気を集めている。debug_io_direct設定の背後にあるダイレクト I/O 機能への期待がある。