2026/01/31

PostgreSQL 14の新機能、仕様変更、不具合修正。開発者、運用管理管理者向け

 

1. PostgreSQL 14 基本情報

  • 正式リリース日: 2021年9月30日

  • 主なテーマ: 接続多数時のパフォーマンス改善、JSON操作の強化、監視機能の拡充


2. 開発者向けの新機能

開発効率を高めるSQL構文の拡張や、新しいデータ型操作が追加されました。

  • JSONBのサブスクリプト構文:

    • jsonb型に対して、配列のような data['key'] 形式でアクセス可能になりました(従来の data->'key' も利用可)。

  • マルチレンジ(Multirange)型:

    • 不連続な範囲を扱えるデータ型(例: int4multirange)が追加され、複雑なスケジュール管理などが容易になりました。

  • ストアドプロシージャのOUTパラメータ:

    • CALL 文で呼び出すプロシージャから複数の値を返せるようになりました。

  • バイナリコピーの高速化:

    • COPY コマンドで論理デコードのストリーミングがサポートされ、大規模なデータ転送が改善されました。


3. 運用管理担当者向けの新機能

パフォーマンス最適化と監視機能が大幅に強化されています。

パフォーマンスとスケーラビリティ

  • アクティブ/アイドル接続の並列処理改善:

    • 多数のクライアントが接続されている環境でのスナップショット計算のオーバーヘッドが削減され、スループットが向上しました。

  • B-treeインデックスの肥大化抑制:

    • 頻繁に更新されるテーブルのインデックスにおける重複エントリの処理が最適化されました。

  • GiSTインデックスのビルド高速化:

    • ソートを利用したインデックス作成が可能になり、構築時間が短縮されました。

監視・運用

  • クエリ識別子(Query ID)のコア導入:

    • pg_stat_statements を使用せずに標準でクエリにIDが付与されるようになり、ログと統計情報の紐付けが容易になりました。

  • 新しい定義済みロール:

    • pg_read_all_data(全データの読み取り権限)

    • pg_write_all_data(全データの書き込み権限)

  • VACUUMの最適化:

    • 緊急時にVACUUMをスキップさせない vacuum_failsafe_age 等の設定が追加され、トランザクションIDの周回問題への耐性が向上しました。


4. 重要な仕様変更と互換性(注意点)

アップグレード時に確認が必要な項目です。

  • パスワード暗号化のデフォルト変更:

    • password_encryptionmd5 から scram-sha-256 に変更されました。古いクライアントライブラリを使用している場合は接続に注意が必要です。

  • 幾何データ型の演算子削除:

    • 古い非推奨の包含演算子(@~)が削除されました。代わりに <@@> を使用してください。

  • 配列関数のシグネチャ変更:

    • array_append などの関数が anyarray ではなく anycompatiblearray を受け取るようになりました。これらを参照するユーザ定義オブジェクト(集約など)は再作成が必要になる場合があります。


5. 修正された主な不具合

V14のリリース後、マイナーバージョン(14.1〜14.x)で以下の重要な修正が行われています。

  • CREATE INDEX CONCURRENTLY の破損修正 (V14.4):

    • 特定の条件下でVACUUMと同時に実行するとインデックスが壊れる重大なバグが修正されました。

  • セキュリティ修正 (CVE-2022-1552):

    • VACUUMREINDEX などの実行中に、権限の低いユーザーがスーパーユーザー権限でコードを実行できる脆弱性が修正されました。

  • ltree型のGiSTインデックス破損修正 (V14.3):

    • contrib/ltree を使用している場合、アップグレード後にREINDEXが必要なケースがありました。