# 全く新しい PostgreSQL 18

> 画期的なスピード。主要な新機能。

## 飛躍的なスピード、革新的な機能。
#

<img src="https://cdn-console.zeabur.com/f/EoBSX/psql18inblog.png" alt="PostgreSQL 18" className="w-full rounded-xl" />

長らくお待たせいたしました。PostgreSQL Global Development Group は **PostgreSQL 18** を正式にリリースしました。これは、約10年にわたり毎秋メジャーアップデートを提供し続けてきた伝統の継続です。これは単なる段階的なアップデートではなく、昨年比 25% 増となる **202 の新機能**を搭載した画期的なリリースです。

世界で最も人気のあるデータベースに依存する開発者やチームにとって、PostgreSQL 18 は3つの重要な約束を実現します：革命的なパフォーマンス、より少ないコードで実現する強力な新ツール、そしてよりスマートで安全な運用。

以下では、あなたのアプリケーションに最も大きな影響を与える機能を詳しく解説し、Zeabur で今すぐ使い始める方法をご紹介します。

---

### パフォーマンスの量子的飛躍：非同期 I/O

PostgreSQL 18 で最も注目すべきは、まぎれもなく全く新しい**非同期 I/O (AIO) サブシステム**です。これは、あらゆるデータベースにおける最大のパフォーマンスボトルネックの1つ、つまりディスクとメモリ間のデータ転送を待つ時間を徹底的に解決するために設計された基盤的なアップグレードです。

**従来の問題：** 以前、Postgres がディスクからデータを読み取る必要がある場合、その操作が完了するまで一時停止して待機しなければならず、その後でないと他のタスクを実行できませんでした。これは、電話をかけて保留のまま待たされるようなもので、他の作業に使えたはずの貴重な CPU サイクルを無駄にしていました。

**AIO による解決策：** PostgreSQL 18 はこのパターンを根本的に変えます。データベースは複数の I/O リクエストを同時に発行し、ディスクがこれらのリクエストを処理している間も他のタスクを並行して処理し続けることができます。CPU リソースは解放されたままとなり、クエリとバックグラウンド操作を同時に進めることが可能です。

**これがあなたにとって意味すること：**
初期のブログ記事やベンチマークテストでは、シーケンシャルスキャンや vacuum などの I/O 集約的なワークロードで **2倍から3倍のパフォーマンス向上**が示されています。あなたのアプリケーションにとって、これは以下を意味します：

- **より高速なクエリ実行：** アプリケーションの応答性が向上します。
- **より高いスループット：** 分析や機械学習パイプラインがより速くデータを処理できます。
- **より高いハードウェア効率：** アプリケーションコードを1行も変更することなく、既存の CPU からより高いパフォーマンスを引き出せます。

---

### 開発者のエンパワーメント：より強力な機能、より少ないコード

Postgres 18 は、長年の議論に決着をつけ、日常の開発作業をより簡単かつ効率的にする、開発体験を向上させる複数の機能を導入しています。

#### 1. UUIDv7 のネイティブサポート

主キーに `SERIAL` と `UUID` のどちらを使用すべきかという議論にほぼ決着がつきました。PostgreSQL 18 はネイティブの `uuidv7()` 関数を導入しています。

- **概要：** タイムスタンプが埋め込まれた新しい標準 UUID フォーマットです。
- **なぜ優れているか：** ランダムな UUIDv4 とは異なり、UUIDv7 の値は自然に順序付けられています。これにより B-tree インデックスのパフォーマンスとキャッシュ効率が劇的に向上し、ランダムキーによって引き起こされるインデックスの肥大化を避けながら**挿入と更新を高速化**します。

```sql
-- UUIDv7 を主キーとして使用してテーブルを作成
CREATE TABLE orders (
    id UUID PRIMARY KEY DEFAULT uuidv7(),
    total DECIMAL(10,2),
    created_at TIMESTAMP DEFAULT NOW()
);
```

#### 2. 仮想派生カラムがデフォルトオプションに

派生カラムがよりスマートになりました。Postgres 18 では、デフォルトで `VIRTUAL`（仮想）になります。

- **概要：** カラムの値は、書き込み時に計算されてディスクに保存されるのではなく、読み取り時に動的に計算されます。
- **なぜ優れているか：** 冗長なデータを排除することでディスクスペースを大幅に節約し、`INSERT` および `UPDATE` 操作を高速化します。`monthly_salary` から `annual_salary` を計算するなど、派生データに最適です。

```sql
CREATE TABLE employees (
    salary DECIMAL(10,2),
    -- 'VIRTUAL' がデフォルトになったため、追加のキーワードは不要
    annual_salary DECIMAL(12,2) GENERATED ALWAYS AS (salary * 12)
);
```

#### 3. よりスマートなインデックス作成：B-tree スキップスキャン

この機能は、複数カラムインデックスの長年の制限を解消します。以前は、`(region, category, sale_date)` にインデックスを作成した場合、クエリに先頭カラムの `region` が含まれている場合にのみ効率的に使用できました。

- **概要：** スキップスキャンにより、Postgres は省略されたプレフィックスカラムの異なる値を賢く「スキップ」できます。
- **なぜ優れているか：** 複数カラムインデックスがはるかに柔軟になります。`region` でフィルタリングしなくても、`category` と `sale_date` で効率的にクエリできるようになり、既存のインデックスが分析やレポーティングでより強力になります。

#### 4. `RETURNING` で `OLD` と `NEW` の値にアクセス

`RETURNING` 句の機能が大幅に強化されました。更新前 (`OLD`) と更新後 (`NEW`) の値の両方に、単一のステートメントでアクセスできるようになりました。これは、トリガーや追加のクエリを必要とせずに監査ログを作成したり、複雑なロジックを処理したりする上での大きな進歩です。

```sql
-- 価格を更新し、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 には、運用負荷を軽減し、より堅牢なシステムの構築を支援する機能も含まれています。

- **組み込みの OAuth 2.0 認証：** 企業ユーザーにとって大きなメリットです。Google、Auth0、Okta などの ID プロバイダーに認証を委任できるようになりました。これにより認証情報が集中管理され、アプリケーションはパスワードの代わりにアクセストークンを使用して接続できます。
- **時間制約 (`WITHOUT OVERLAPS`)：** スキーマレベルで時間ベースの整合性を強制できるようになりました。これにより、テーブル内の時間範囲が誤って重複しないことが保証され、スケジューリングシステム、予約システム、従業員契約に最適です。ガントチャート上の「時間バー」が重なるべきでないときに絶対に重ならないことを保証します。
- **改善された `EXPLAIN` 出力：** クエリの最適化がより簡単になりました。`EXPLAIN ANALYZE` の出力に**デフォルトでバッファ使用情報が含まれる**ようになり、以前は見過ごしやすかった I/O パフォーマンスの問題を即座に発見できます。

---

### 今すぐ Zeabur で PostgreSQL 18 をデプロイ

これらの機能について知ることも素晴らしいですが、実際に体験することはさらに良いことです。本日より **PostgreSQL 18 が Zeabur でデプロイ可能になった**ことをお知らせします。

ワンクリックで、完全に設定された新しい PostgreSQL 18 サービスを立ち上げ、非同期 I/O からネイティブ UUIDv7 まで、これらすべての新しいパワーをすぐに手に入れることができます。ぜひご自身で飛躍的なスピードと革新的な機能を体験してください。

[**今すぐ PostgreSQL 18 をデプロイ**](https://zeabur.com/templates/B20CX0)
