PostgreSQL 19ベータ1の新機能と既定値の変更

PostgreSQL 19ベータ1の新機能と既定値の変更

作成日:
読了:6
更新日:

PostgreSQL 19 Beta 1が2026年6月4日に公開されました。コア機能は出そろっていますが本番利用は想定されておらず、追加のベータとリリース候補を経て、正式版は2026年9月から10月ごろに出る見込みです。PostgreSQL 18で入った非同期I/Oの土台を引き継ぎ、その上に機能を積み増した版にあたります。

開発者がすぐ使える新機能

ON CONFLICT DO SELECTは、競合した行をそのまま取り出せるようにします。これまで「あれば取得、なければ挿入」を1文で書こうとすると、競合時にDO UPDATEでダミーの更新をかけ、不要な不可視タプルを生んでいました。新しい構文はその回避策を置き換えます。

競合行をそのまま返す
INSERT INTO users (email, name) VALUES ('a@example.com', 'A')
ON CONFLICT (email) DO SELECT
RETURNING *;

REPACKは、テーブルの再編成を1つのコマンドにまとめます。従来VACUUM FULLCLUSTERに分かれていた処理を統合し、CONCURRENTLYを付ければ排他ロックを取らずに再編成できます。使うレプリケーションスロット数はmax_repack_replication_slotsで制御します。

排他ロックなしの再編成
REPACK my_table CONCURRENTLY;

COPY TOがJSONを直接出力できるようになりました。既定では1行1オブジェクトのNDJSON形式で、FORCE_ARRAYを付けると配列として出します。

JSONでのエクスポート
COPY my_table TO STDOUT WITH (FORMAT json);
COPY my_table TO STDOUT WITH (FORMAT json, FORCE_ARRAY);

SQL/PGQも入りました。これはSQL:2023のプロパティグラフクエリで、既存のリレーショナルテーブルに対してGRAPH_TABLE句でパターンマッチングを書けます。専用のストレージへ移す必要はなく、テーブルをグラフとして問い合わせます。

運用と性能にかかわる変更

autovacuumが並列ワーカーを使えるようになりました。autovacuum_max_parallel_workersでインデックス処理の並列度を決めます。並列化はメモリを食うため、消費量がワーカー数とmaintenance_work_memの積で膨らむ点に注意がいります。どのテーブルを優先して掃除するかは、新しいビューpg_stat_autovacuum_scoresでスコアを確認できます。

非同期I/Oは、PostgreSQL 18のio_method=workerを土台に、負荷へ応じてワーカー数を自動で増減するようになりました。io_min_workersio_max_workersなどのパラメータで範囲を決めます。実行計画ではEXPLAIN ANALYZEのI/O統計から非同期I/Oの様子を読めます。

外部キー制約のチェックは、INSERT時の性能が公式ニュースで最大2倍になったとされています。データチェックサムは、クラスタを止めて初期化し直さなくても、オンラインで有効化と無効化を切り替えられるようになりました。

プランナーの判断を安定させたい場合は、新しいcontrib拡張のpg_plan_adviceを使います。SQLにコメントを書く代わりにGUC設定で指示を与え、アプリのコードを変えずに実行計画を固定できます。

プラン安定化の拡張
CREATE EXTENSION pg_plan_advice;

既定値と互換性の変更

メジャー更新なので、既定値の変更と削除がいくつかあります。とくにJITが既定で無効になった点は、分析系の重いクエリで性能差として現れることがあるので、必要なら明示的に有効化します。

項目変更影響
jiton から off分析クエリで遅くなる場合がある。必要時に SET jit = on
default_toast_compressionpglz から lz4新規TOASTデータがlz4圧縮になる。既存データは不変
max_locks_per_transaction64 から 128ロック構造の変更による既定の引き上げ
log_lock_waitsoff から onロック待ちが自動でログに残る
RADIUS認証削除利用中なら別の認証方式へ移行が必要
inet / cidr の既定opclassGiSTへ変更該当インデックスがあると pg_upgrade が失敗する
C言語のビルド要件C99 から C11拡張機能の再コンパイルが必要

このほか、standard_conforming_stringsがサーバー側で強制され、MULE_INTERNALエンコーディングが廃止されました。データベース名やロール名に改行文字を含むクラスタはpg_upgradeに失敗するため、事前に確認します。アップグレードはpg_dumpallによるダンプとリストア、pg_upgrade、論理レプリケーションのいずれかで行います。

試すときの前提

Beta 1は本番向けではありません。正式版までに仕様が動く余地があり、既定値の変更や削除も含むため、検証は新しい環境で行います。手元のアプリを移すときは、JITの無効化やTOASTの圧縮方式の変更が性能に与える影響を測り、pg_upgradeが失敗する条件に当たっていないかを先に確かめておきます。

外部キーチェックの高速化の具体的な実装内容や、I/Oワーカーの既定値といった細部は、リリースノートに数値が明示されていない部分もあります。本番採用の判断材料にするなら、正式版のリリースノートで確定値を確認してください。

参考

Supabase 完全入門 - PostgreSQL ベースの BaaS と Firebase との徹底比較(2026年最新版)

Supabase 完全入門 - PostgreSQL ベースの BaaS と Firebase との徹底比較(2026年最新版)

23

オープンソースのFirebase代替として急成長を続けるSupabaseを徹底解説。PostgreSQL/Auth/Storage/Realtime/Edge Functions の主要機能、Next.js での実装サンプル、Row Level Securityの仕組み、2026年新機能(pg-deltaの宣言的スキーマ管理、PostgREST自動リトライ)から、Firebaseとの料金・アーキテクチャ・選定基準の違いまで、現場で必要な情報を網羅します。

Node.jsが年1回のメジャーリリースへ - Node 27からの新スケジュールとLTSの考え方

Node.jsが年1回のメジャーリリースへ - Node 27からの新スケジュールとLTSの考え方

7

Node.js が 2026年3月の公式発表でリリーススケジュールを変更します。Node 27(2027年)から、メジャーは年1回(毎年4月)に集約され、奇数/偶数の区別を廃止して全リリースが LTS 対象に。早期テスト用の Alpha チャンネル新設、総サポート期間の36か月化など、新旧スケジュールの違いと、Node 26 / Node 27 の位置づけ、運用への影響を Node.js 公式ブログを一次ソースに整理します。

REST API設計の基礎と冪等性 - HTTPメソッドの意味と Idempotency-Key

REST API設計の基礎と冪等性 - HTTPメソッドの意味と Idempotency-Key

10

REST API設計の基礎を、HTTPメソッドの意味(safe / idempotent)から整理します。リソース指向のURL設計、GET/POST/PUT/PATCH/DELETE の使い分けと冪等性の早見表、なぜ冪等性がリトライや二重課金防止に重要か、POST を安全にリトライする Idempotency-Key の仕組み、ステータスコードの使い分け、RFC 9457 のエラー形式まで、RFC 9110・MDN・Stripe を一次ソースにまとめます。