オープンソースRDBの最新版「PostgreSQL 16」リリース クエリの並列処理など大幅に改善開発者や管理者向けの機能も多数改善

オープンソースリレーショナルデータベースの最新バージョン「PostgreSQL 16」がリリースされた。

» 2023年09月21日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 PostgreSQLグローバル開発グループは2023年9月14日(米国時間)、オープンソースリレーショナルデータベースの最新バージョン「PostgreSQL 16」をリリースしたと発表した。

 PostgreSQL 16は、クエリの並列処理、バルクデータローディング、論理レプリケーションが大幅に改善され、性能が向上した。SQL/JSON構文の追加、ワークロードの新しい監視統計、大規模な要素群にわたるポリシーを管理するためのアクセス制御ルール定義の柔軟性向上など、開発者や管理者向けの機能も多数改善されている。

 PostgreSQLコアチームのメンバーであるデーブ・ページ氏は、PostgreSQL 16を次のように紹介している。「リレーショナルデータベースのパターンが進化する中で、PostgreSQLは大規模なデータの検索と管理における性能向上を続けている。PostgreSQL 16はユーザーに、ワークロードをスケールアップおよびスケールアウトするためのより多くの方法を提供するとともに、ユーザーが洞察を得たり、データ管理を最適化したりするための新しい方法も提供する」

 PostgreSQLグローバル開発グループはPostgreSQL 16の特徴を、「パフォーマンスの向上」「論理レプリケーション」「開発者体験」「モニタリング」「アクセス制御とセキュリティ」の5つの観点から以下のように説明している。

パフォーマンスの向上

  • 新しいクエリプランナが最適化され、既存のPostgreSQL機能の性能が向上した

 クエリプランナは、FULLとRIGHTの「JOIN」を並列化する、DISTINCT節またはORDER BY節を使用する集約関数を使ったクエリに対して、より最適化された計画を生成する、「SELECT DISTINCT」クエリに対してインクリメンタルソートを利用する、WINDOW関数を最適化し、より効率的に実行されるようにする――ことが可能だ。

  • RIGHTとOUTERの“アンチジョイン”が改良され、JOINされたテーブルに存在しない行を識別できるようになった
  • 単一操作と同時操作の両方で「COPY」を使用した一括ロードが改善され、最大300%の性能向上が確認された
  • 「libpq」を使用するクライアントの負荷分散がサポートされ、VACUUM戦略の改善により、テーブル全体をFREEZEする必要性が減少した
  • x86とArmの両方のアーキテクチャで、SIMDを使用したCPU高速化が導入され、ASCIIとJSON文字列の処理や、配列検索とサブトランザクション検索の実行時の性能が向上した

論理レプリケーション

 論理レプリケーションを使用すると、PostgreSQLの論理レプリケーションプロトコルを解釈できる他のPostgreSQLインスタンスやサブスクライバーに、データをストリームできる。PostgreSQL 16では、論理レプリケーションの機能や性能が以下のように強化された。

  • スタンバイインスタンスから論理レプリケーションを実行できるようになった

 例えば、下流のシステムに変更を論理的に複製するために、スタンバイインスタンスを使用できる。

  • 論理レプリケーションの性能が次のように向上した
    1. サブスクライバーが並列ワーカーを使用して大きなトランザクションを適用できる
    2. 主キーを持たないテーブルでは、サブスクライバーは逐次走査の代わりにB-treeインデックスを使用して、行を見つけることができる
    3. 特定の条件下では、バイナリ形式を使用してテーブルの初期同期を高速化できる
  • 論理レプリケーションに対するアクセス制御の改善

 例えば、新しい定義済みロール「pg_create_subscription」(ユーザーが新しい論理サブスクリプションを作成できるようにする)が追加された。

  • 双方向での論理レプリケーションのサポートが追加され、異なる発行元にある2つのテーブル間でデータを複製できるようになった

開発者体験

  • JSON_ARRAY()、JSON_ARRAYAGG()、IS JSONなど、コンストラクタや述語を含むSQL/JSON標準の構文が追加された
  • アンダースコアを桁区切り文字に使えるようになった(例:5_432_000)
  • 0x1538、0o12470、0b1010100111000など、10進数以外の整数リテラルも使えるようになった
  • 開発者は、「psql」の新しいコマンドの恩恵を受けられるようになった

 これには「\bind」が含まれ、パラメーター化されたクエリを準備して、bindを使用して変数を置換できる。

  • 文字列の照合順序(文字列のソート方法の規則を提供する)における一般的なサポートの改善

 PostgreSQL 16はデフォルトでICUをサポートして構築され、環境からデフォルトのICUロケールを決定し、ユーザーが独自のICU照合規則を定義できる。

モニタリング

  • 「pg_stat_io」が導入された

 これは、I/Oアクセスパターンを詳細に分析するための主要I/O指標の新しい情報源になる。データベースワークロードの性能をチューニングする上では、I/O操作がシステムに与える影響を理解することが重要だ。

  • 「pg_stat_all_tables」ビューに、テーブルやインデックスが最後にスキャンされた日時を示すタイムスタンプを記録する新しいフィールドが追加された
  • パラメーター化された文に渡された値を記録することで、「auto_explain」がより読みやすくなり、「pg_stat_statements」と「pg_stat_activity」で使用されるクエリ追跡アルゴリズムの精度が向上した

アクセス制御とセキュリティ

  • 「pg_hba.conf」および「pg_ident.conf」ファイルの管理が改善された

 ユーザー名とデータベース名の正規表現マッチングや外部設定ファイルのincludeディレクティブが使用できるようになった。

  • セキュリティ指向のクライアント接続パラメーターの追加

 サーバからどの認証パラメーターを受け付けるかどうかをクライアントに指定できるようにする「require_auth」や、PostgreSQLがクライアントOSから提供された信頼された認証局(CA)ストアを使用することを示す「sslrootcert="system"」など、セキュリティ指向のクライアント接続パラメーターが幾つか追加された。

  • Kerberos認証情報の委譲のサポートが追加され、「postgres_fdw」や「dblink」などの拡張が、認証された認証情報を使用して、信頼されたサービスに接続できるようになった

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。