長らくお待たせいたしました。PostgreSQL Global Development Group は PostgreSQL 18 を正式にリリースしました。これは、約10年にわたり毎秋メジャーアップデートを提供し続けてきた伝統の継続です。これは単なる段階的なアップデートではなく、昨年比 25% 増となる 202 の新機能を搭載した画期的なリリースです。
世界で最も人気のあるデータベースに依存する開発者やチームにとって、PostgreSQL 18 は3つの重要な約束を実現します:革命的なパフォーマンス、より少ないコードで実現する強力な新ツール、そしてよりスマートで安全な運用。
以下では、あなたのアプリケーションに最も大きな影響を与える機能を詳しく解説し、Zeabur で今すぐ使い始める方法をご紹介します。
PostgreSQL 18 で最も注目すべきは、まぎれもなく全く新しい非同期 I/O (AIO) サブシステムです。これは、あらゆるデータベースにおける最大のパフォーマンスボトルネックの1つ、つまりディスクとメモリ間のデータ転送を待つ時間を徹底的に解決するために設計された基盤的なアップグレードです。
従来の問題: 以前、Postgres がディスクからデータを読み取る必要がある場合、その操作が完了するまで一時停止して待機しなければならず、その後でないと他のタスクを実行できませんでした。これは、電話をかけて保留のまま待たされるようなもので、他の作業に使えたはずの貴重な CPU サイクルを無駄にしていました。
AIO による解決策: PostgreSQL 18 はこのパターンを根本的に変えます。データベースは複数の I/O リクエストを同時に発行し、ディスクがこれらのリクエストを処理している間も他のタスクを並行して処理し続けることができます。CPU リソースは解放されたままとなり、クエリとバックグラウンド操作を同時に進めることが可能です。
これがあなたにとって意味すること: 初期のブログ記事やベンチマークテストでは、シーケンシャルスキャンや vacuum などの I/O 集約的なワークロードで 2倍から3倍のパフォーマンス向上が示されています。あなたのアプリケーションにとって、これは以下を意味します:
Postgres 18 は、長年の議論に決着をつけ、日常の開発作業をより簡単かつ効率的にする、開発体験を向上させる複数の機能を導入しています。
主キーに SERIAL と UUID のどちらを使用すべきかという議論にほぼ決着がつきました。PostgreSQL 18 はネイティブの uuidv7() 関数を導入しています。
-- UUIDv7 を主キーとして使用してテーブルを作成
CREATE TABLE orders (
id UUID PRIMARY KEY DEFAULT uuidv7(),
total DECIMAL(10,2),
created_at TIMESTAMP DEFAULT NOW()
);
派生カラムがよりスマートになりました。Postgres 18 では、デフォルトで VIRTUAL(仮想)になります。
INSERT および UPDATE 操作を高速化します。monthly_salary から annual_salary を計算するなど、派生データに最適です。CREATE TABLE employees (
salary DECIMAL(10,2),
-- 'VIRTUAL' がデフォルトになったため、追加のキーワードは不要
annual_salary DECIMAL(12,2) GENERATED ALWAYS AS (salary * 12)
);
この機能は、複数カラムインデックスの長年の制限を解消します。以前は、(region, category, sale_date) にインデックスを作成した場合、クエリに先頭カラムの region が含まれている場合にのみ効率的に使用できました。
region でフィルタリングしなくても、category と sale_date で効率的にクエリできるようになり、既存のインデックスが分析やレポーティングでより強力になります。RETURNING で OLD と NEW の値にアクセスRETURNING 句の機能が大幅に強化されました。更新前 (OLD) と更新後 (NEW) の値の両方に、単一のステートメントでアクセスできるようになりました。これは、トリガーや追加のクエリを必要とせずに監査ログを作成したり、複雑なロジックを処理したりする上での大きな進歩です。
-- 価格を更新し、1つのクエリで新旧の値を同時に確認
UPDATE products
SET price = price * 1.10
WHERE name = 'Widget'
RETURNING
name,
old.price AS old_price,
new.price AS new_price;
PostgreSQL 18 には、運用負荷を軽減し、より堅牢なシステムの構築を支援する機能も含まれています。
WITHOUT OVERLAPS): スキーマレベルで時間ベースの整合性を強制できるようになりました。これにより、テーブル内の時間範囲が誤って重複しないことが保証され、スケジューリングシステム、予約システム、従業員契約に最適です。ガントチャート上の「時間バー」が重なるべきでないときに絶対に重ならないことを保証します。EXPLAIN 出力: クエリの最適化がより簡単になりました。EXPLAIN ANALYZE の出力にデフォルトでバッファ使用情報が含まれるようになり、以前は見過ごしやすかった I/O パフォーマンスの問題を即座に発見できます。これらの機能について知ることも素晴らしいですが、実際に体験することはさらに良いことです。本日より PostgreSQL 18 が Zeabur でデプロイ可能になったことをお知らせします。
ワンクリックで、完全に設定された新しい PostgreSQL 18 サービスを立ち上げ、非同期 I/O からネイティブ UUIDv7 まで、これらすべての新しいパワーをすぐに手に入れることができます。ぜひご自身で飛躍的なスピードと革新的な機能を体験してください。