- PostgreSQL 17 には、主要な性能向上、メモリ管理の改善、ストレージアクセスの最適化、高同時実行ワークロードの改善、大量ロードおよびエクスポート速度の向上、インデックスクエリ実行の改善などが含まれる
システム全体の性能向上
- 通常運用に不可欠な PostgreSQL の vacuum プロセスの内部メモリ構造を改善し、メモリ使用量を最大 20 倍削減
- vacuum の高速化と共有リソース使用量の削減により、ワークロードにより多くのリソースを割り当て可能
- I/O レイヤーの性能を継続的に改善
- Write-Ahead Log(WAL) 処理の改善により、高同時実行ワークロードで最大 2 倍優れた書き込みスループットを実現
- 新しいストリーミング I/O インターフェースにより、シーケンシャルスキャン(テーブル内の全データ読み取り)の速度と、ANALYZE コマンドによる実行計画統計の更新速度を向上
- クエリ実行にも性能向上効果を拡張
- B-tree インデックス(PostgreSQL のデフォルトのインデックス方式)を使用する
IN 句を含むクエリの性能を改善
- BRIN インデックスで並列ビルドをサポート
- クエリ計画作成のための複数の改善を含む
NOT NULL 制約に対する最適化
- 共通テーブル式(
WITH クエリ)の処理を改善
bit_count 関数で AVX-512 を使用するなど、計算高速化のための SIMD(Single Instruction/Multiple Data) 対応を拡大
強力な開発者体験をさらに拡張
- PostgreSQL は JSON サポートを追加した最初のリレーショナルデータベースだった(2012年)
- PostgreSQL 17 では SQL/JSON 標準の実装をさらに拡張
JSON_TABLE により JSON データを標準的な PostgreSQL テーブルへ変換可能
- SQL/JSON コンストラクタ(
JSON, JSON_SCALAR, JSON_SERIALIZE)およびクエリ関数(JSON_EXISTS, JSON_QUERY, JSON_VALUE)をサポート
- JSON データを PostgreSQL の基本データ型(数値、真偽値、文字列、日付/時刻)へ変換することに重点を置いた
jsonpath 式を追加
MERGE コマンドに RETURNING 句とビュー更新機能を追加
- 大量ロードおよびデータエクスポート機能を強化
COPY コマンドで大きな行をエクスポートする際、最大 2 倍の性能改善
- ソースとターゲットのエンコーディングが一致する場合の
COPY 性能を改善
- 挿入エラーが発生してもインポートを継続できる
ON_ERROR オプションを追加
- パーティションおよびリモート PostgreSQL インスタンスに分散したデータ管理機能を拡張
- パーティションテーブルで ID 列と排他制約の使用をサポート
postgres_fdw を使用して EXISTS および IN サブクエリをリモートサーバーへプッシュ可能
- 組み込みの、プラットフォーム非依存かつ不変な照合順序プロバイダーを搭載
- C 照合順序に近いソートセマンティクスを提供しつつ、
SQL_ASCII の代わりに UTF-8 エンコーディングを使用
- この新しい照合順序プロバイダーを使用すると、PostgreSQL の実行場所に関係なく、テキストベースのクエリが同じソート結果を返す
高可用性とメジャーバージョンアップグレードのための論理レプリケーション改善
- 論理レプリケーションはリアルタイムでデータをストリーミングするために使用される
- 以前のバージョンでは、メジャーバージョンアップグレード時に論理レプリケーションスロットを削除する必要があり、その結果、アップグレード後にサブスクライバーへデータを再同期する必要があった
- PostgreSQL 17 からは論理レプリケーションスロットを削除する必要がなくなり、アップグレードプロセスが簡素化
- 論理レプリケーション向けのフェイルオーバー制御機能を含み、高可用性環境でより柔軟に展開可能
pg_createsubscriber コマンドラインツールを導入し、物理レプリカを新しい論理レプリカへ変換可能
セキュリティと運用管理のためのより多くのオプション
- PostgreSQL 17 は、データベースシステムの全体的なライフサイクルをユーザーが管理する方法をさらに拡張
- ALPN 使用時に直接 TLS ハンドシェイクを実行できる
sslnegotiation という新しい TLS オプションを追加
- メンテナンス作業を実行する権限を付与する
pg_maintain 事前定義ロールを追加
- PostgreSQL に含まれるバックアップユーティリティ
pg_basebackup が増分バックアップをサポートし、完全バックアップを再構成するための pg_combinebackup ユーティリティを追加
pg_dump に、ダンプファイル作成時に含めるオブジェクトを選択できる --filter という新しいオプションを追加
- 監視および分析機能を強化
EXPLAIN でローカル I/O ブロックの読み書きに要した時間を表示
SERIALIZE と MEMORY の 2 つの新オプションを追加し、ネットワーク転送用のデータ変換に要した時間と使用メモリ量の確認に役立つ
- インデックスクリーンアップの進行状況を報告
pg_wait_events システムビューを追加し、pg_stat_activity と組み合わせることで、アクティブセッションが待機している理由についての洞察を提供
1件のコメント
Hacker Newsの意見
PostgreSQL 17 の新リリースを祝福するとともに、さまざまな改善点に言及
pg_basebackupの増分バックアップ対応、およびpg_combinebackupユーティリティの追加JSON機能 の有用性に関する意見
JSON_TABLE 機能の活用経験を共有
PostgreSQL 17 の性能向上とUX機能改善に言及
変更ログ に対する印象
オープンソースソフトウェア への信頼の問題から、Oracle から MSSQL に移行した経験を共有
Postgres の継続的な改善への感謝と、Incremental View Maintenance(IVM)拡張機能の正式サポートへの期待
PostgreSQL のメジャーバージョンアップグレード支援への期待
Postgres へのシステムバージョンテーブル導入への期待
Postgres のJSON統合改善が、新しいWebフレームワークのパラダイムを可能にするだろうという期待