13 ポイント 投稿者 GN⁺ 2024-09-27 | 1件のコメント | WhatsAppで共有
  • 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 ブロックの読み書きに要した時間を表示
    • SERIALIZEMEMORY の 2 つの新オプションを追加し、ネットワーク転送用のデータ変換に要した時間と使用メモリ量の確認に役立つ
  • インデックスクリーンアップの進行状況を報告
  • pg_wait_events システムビューを追加し、pg_stat_activity と組み合わせることで、アクティブセッションが待機している理由についての洞察を提供

1件のコメント

 
GN⁺ 2024-09-27
Hacker Newsの意見
  • PostgreSQL 17 の新リリースを祝福するとともに、さまざまな改善点に言及

    • VACUUM処理のメモリ構造改善により、メモリ使用量が最大20倍削減
    • バックアップユーティリティ pg_basebackup の増分バックアップ対応、および pg_combinebackup ユーティリティの追加
    • 外部データラッパー(FDW)の改善により、リモートサーバーで EXISTS および IN サブクエリを処理可能
  • JSON機能 の有用性に関する意見

    • リレーショナルデータベースにおけるJSON機能の有用性を強調
    • データからJSONを生成できる機能の重要性に言及
    • JSON_TABLE 機能を学びたいという期待感を表明
  • JSON_TABLE 機能の活用経験を共有

    • JSONレスポンスを jsonb 列に保存し、ビューを書いてパースする方式の有用性を強調
    • 新しいPostgreSQL機能のドキュメントでこの方式を確認し、うれしく感じた
  • PostgreSQL 17 の性能向上とUX機能改善に言及

    • パーティション化テーブルでのID列および排他制約のサポート
    • プラットフォーム非依存かつ不変の照合プロバイダー追加により、テキストベースのクエリで一貫したソート結果を保証
  • 変更ログ に対する印象

    • UUIDv7 PR が含まれておらず残念
  • オープンソースソフトウェア への信頼の問題から、Oracle から MSSQL に移行した経験を共有

    • 「ビジネスソフトウェアにオープンソースは信頼できない」という上司の主張
  • Postgres の継続的な改善への感謝と、Incremental View Maintenance(IVM)拡張機能の正式サポートへの期待

  • PostgreSQL のメジャーバージョンアップグレード支援への期待

  • Postgres へのシステムバージョンテーブル導入への期待

  • Postgres のJSON統合改善が、新しいWebフレームワークのパラダイムを可能にするだろうという期待