pgsql-hackersウォッチ(2026年6月)

今回は、PostgreSQL の開発者向けメーリングリストである pgsql-hackers で、2026年6月に行われた議論の中から、筆者が注目した話題を紹介します。網羅的なまとめではなく、筆者が追跡した範囲での内容となります。

Commit Sequence Numbers(CSN)スナップショット

5月末には、カナダ・バンクーバーで PostgreSQL の開発者やユーザ、コミュニティ関係者が集まるイベント PGConf.dev 2026 が開催されました。アンカンファレンスで行われた議論をきっかけに、Commit Sequence Numbers(CSN)を用いたスナップショット管理についての議論が続きました。

現在の PostgreSQL では、ある時点で実行中のトランザクション ID の一覧を保持することで可視性を判定しています。一方、CSN ベースでは各トランザクションにコミット順を表す番号を付与し、それを基準に可視性を判断します。この方式では、スナップショット取得を高速化できるほか、プライマリとスタンバイで可視性判定が異なることによって発生する Long Fork アノマリの解消などが期待されています。

一方で、同期コミットと非同期コミットを組み合わせた場合の可視性判定など、解決すべき課題についても議論が行われていました。

プランナ関連の議論

プランナ関連では、今月も興味深い提案がいくつかありました。

一つは、外部キー制約を利用して不要な内部結合を削減する最適化です。結合先テーブルが結果に影響しない場合にはスキャンそのものを省略できるため、多段結合を伴うグラフクエリなどで大きな性能向上が期待されています。一方で、PostgreSQL の外部キー制約は AFTER トリガで実装されているため、制約が一時的に満たされないケースへの対応方法についても、PGConf.dev 2026 での議論を踏まえて整理されました。

また、拡張統計情報(多重列 MCV)を利用した行数推定精度の改善も提案されました。検索条件の組み合わせが統計情報に存在しない場合でも、最頻値リストの性質を利用してより精度の高い行数推定を行うことで、実行計画の品質向上を目指しています。また、同じ開発者からは、LEFT JOIN や FULL JOIN をより効率的な ANTI JOIN に変換する最適化手法も提案されており、結合処理全体の最適化に向けた取り組みが続いています。

さらに、EXPLAIN に表示されるサブプラン名の改善も提案されました。この改善は私が提案したもので、最適化によって EXISTS が ANY サブプランへ変換された場合でも、それぞれを区別しやすい名前を付けることで、実行計画の可読性向上や pg_plan_advice などでの利用性向上を目的としています。

論理レプリケーション

論理レプリケーション関連では、5月に続き競合情報(conflict)を専用テーブルへ保存する機能の議論が継続しました。6月は pg_dump 実行時のロック制御や、保存するデータ型を JSON 型へ統一することなどが議論されています。

DDL レプリケーションについても継続的な議論が行われました。これまでの提案では、1つの DDL が複数のコマンドへ分割されるケースがありましたが、6月は単一の JSON 表現へ変換するための共通インフラが提案されました。この仕組みは DDL レプリケーションに限らず、他用途での利用も想定されており、独立した基盤として議論が進められています。また、拡張モジュール向けに論理デコーディング時のフックを追加し、contrib モジュールによる DDL レプリケーションを実現する提案も行われていました。

それ以外の議論

グローバル一時テーブル(Global Temporary Tables)を実装する提案が再び始まりました。グローバル一時テーブルは、テーブル定義は永続化されて全セッションから共有される一方、格納されるデータは各セッションごとに独立した一時データとして扱われる仕組みです。過去にも提案されたテーマですが、新しい設計によるパッチセットが投稿され、改めて議論が始まっています。今回のパッチの投稿者とは別に、別の開発者も同時期にパッチセットを準備しており、共同で議論を進めるなど、コミュニティ内で継続的に関心のあったテーマであることが伺えます。

また、新しい SQL 構文として Key Joins の提案もありました。これは外部キー制約に基づく結合であることを SQL 上で明示する構文で、意図しない結合を防ぐことを目的としています。PostgreSQL 独自機能に留まらず、SQL 標準への提案も視野に入れられている点が興味深いところです。