すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarDB for PostgreSQL 17 が正式にリリースされました

最終更新日:Nov 12, 2025

PolarDB for PostgreSQL PostgreSQL 17 互換バージョンが正式にリリースされました。PostgreSQL 17 では、パフォーマンスの向上、O&M の簡素化、機能の拡張により、データベースの使いやすさと効率が向上しています。

概要

PolarDB for PostgreSQL 17 は、GanosBasePostgreSQL 17 の機能に加えて、PolarDB for PostgreSQLhlllog_fdwmysql_fdwペースpg_bigmpg_cronpg_jiebapg_repackpg_similaritypgtappgvectorpldebuggerプレフィックスvarbitxzhparserganos 時空間エンジン、グローバルプランキャッシュメカニズム、GBK/GB18030 文字セットなど、さまざまな機能を提供します。 17 の最初のリリースでは、データベースの機能を拡張するために、次のプラグインをサポートしています:、、、、、、、、、、、、、、、。

PolarDB は、命令セットの最適化(SIMD/アトミック操作)、システムレベルの最適化(PGO/BOLT/LTO)、I/O パフォーマンスの向上など、広範なパフォーマンス最適化を実装しています。

説明

詳細については、「PostgreSQL 17 リリースノート」をご参照ください。

リリース日

2025 年 4 月 3 日 (UTC + 08:00)

課金

サブスクリプションと従量課金の課金方法がサポートされています。どちらの方法も、コンピューティングプランとストレージプランを組み合わせて、柔軟なコスト管理を実現できます。詳細については、「課金」をご参照ください。

主な改善点

パフォーマンスの向上

  • vacuum プロセスのメモリ消費量の削減:vacuum プロセスは、PostgreSQL データベースの正常性にとって重要です。ただし、多くのクラスタリソースを消費します。PostgreSQL 17 では、vacuum 操作用の新しい内部メモリ構造が導入され、メモリ消費量が最大 20 倍削減されます。これにより、vacuum プロセスが高速化され、共有リソースの使用量が減少し、他のワークロードにより多くのリソースが解放されます。

  • I/O パフォーマンスの向上PostgreSQL 17 では、先行書き込みログ(WAL)処理が改善され、高並列シナリオでの書き込みスループットが 2 倍になります。新しいストリーミング I/O インターフェイスにより、シーケンシャルスキャン(全表スキャン)と ANALYZE 操作が高速化されます。

  • クエリパフォーマンスの向上PostgreSQL 17 では、B-tree インデックス(PostgreSQL のデフォルトのインデックス作成方法)を使用した IN 句クエリの パフォーマンスが向上しています。このリリースでは、ブロック範囲インデックス(BRIN)の並列構築もサポートされています。PostgreSQL 17 では、クエリプランニングが改善され、NOT NULL 制約と共通テーブル式(WITH クエリ)が最適化されています。このリリースでは、より多くの単一命令複数データ(SIMD)命令を使用して計算が高速化されています。これには、AVX-512 を使用した bit_count 関数の高速化が含まれます。

開発者エクスペリエンス

  • PostgreSQL は2012 年にネイティブ JSON サポートを導入した最初のリレーショナルデータベースであり、PostgreSQL 17 で SQL/JSON 標準の実装を継続的に改善してきました。

    • JSON データを標準の PostgreSQL テーブルに変換する JSON_TABLE() 関数が導入されました。

    • SQL/JSON コンストラクタ関数 JSONJSON_SCALARJSON_SERIALIZE と、クエリ関数 JSON_EXISTSJSON_QUERYJSON_VALUE が導入され、開発者は JSON データを操作するためのより多くの方法を利用できるようになりました。

    • JSON データを数値、ブール値、文字列、日付/時刻などのネイティブ PostgreSQL データ型に変換するための JSONPath 式が追加されました。

  • PostgreSQL 17 では、MERGE 文に、条件付き更新の RETURNING 句やビューの更新機能など、より多くの機能が追加されました。

  • PostgreSQL 17 では、バッチロードとデータエクスポートを改善する新機能が追加されました。COPY 文を使用した大きな行のエクスポートが最大 2 倍高速になりました。ソースエンコーディングがターゲットエンコーディングと一致する場合、COPY 文はより効率的に実行されます。さらに、挿入エラーが発生した場合でもインポートプロセスを中断しないように、ON_ERROR オプションが導入されました。

  • PostgreSQL 17 では、パーティションデータとリモートの PolarDB PostgreSQL クラスタに分散されたデータの管理機能が拡張されました。このリリースでは、パーティションテーブルの ID 列と除外制約がサポートされています。PostgreSQL 外部データラッパー(postgres_fdw)は、EXISTS サブクエリと IN サブクエリをリモートサーバーにプッシュダウンして、より効率的なクエリ処理をサポートしています。

  • PostgreSQL 17 では、組み込みのクロスプラットフォームで保証された不変の照合プロバイダーが導入されました。このプロバイダーは、C 照合と同じソートセマンティクスを持ちますが、SQL_ASCII ではなく UTF-8 エンコーディングを使用します。また、PostgreSQL で使用されるプラットフォームに関係なく、テキストベースのクエリで一貫したソート結果が返されるようにします。

論理レプリケーション

論理レプリケーションは、さまざまなシナリオでリアルタイムのデータストリーミングを行うために不可欠です。PostgreSQL 17 より前のリリースでは、メジャーバージョンアップグレードの前に論理レプリケーションスロットを削除する必要がありました。その結果、アップグレード後にサブスクライバーデータを再同期する必要がありました。PostgreSQL 17 以降では、論理レプリケーションスロットを削除せずにメジャーアップグレードを実行できます。

PostgreSQL 17 では、論理レプリケーションのフェールオーバー制御が導入され、高可用性環境での信頼性が向上しています。このリリースでは、pg_createsubscriber コマンドラインツールが導入されました。これにより、物理レプリケーションを使用するレプリカでの論理レプリケーションが容易になります。

セキュリティと運用管理のオプション

  • PostgreSQL 17 では、ライフサイクル全体にわたってユーザーがデータベースシステムを管理する方法が改善されています。PolarDB for PostgreSQL では、sslnegotiation と呼ばれる新しい Transport Layer Security (TLS) オプションが導入されました。これにより、ALPN ディレクトリに postgresql が登録されている場合、アプリケーション層プロトコルネゴシエーション (ALPN) を使用して直接 TLS ハンドシェイクを実行できます。

  • PostgreSQL 17 では、ユーザーがメンテナンス操作を実行できるようにする pg_maintain ロールが追加されました。

  • ネイティブ PostgreSQL バックアップツール pg_basebackup ( PostgreSQL 17 ) は、増分バックアップをサポートしています。pg_combinebackup ツールは、完全バックアップを再構築するために追加されました。--filter オプションは、pg_dump ツールに追加され、ユーザーがダンプに含めるオブジェクトを指定できるようになりました。

  • PostgreSQL 17 では、監視と分析機能も強化されています。

    • ローカル I/O ブロックの読み取りと書き込みに費やされた時間が EXPLAIN 文に表示されるようになりました。この文には、SERIALIZEMEMORY という 2 つの新しいオプションも含まれています。これらは、それぞれネットワーク送信中のデータ変換に費やされた時間とメモリ使用量を示します。

    • インデックスクリーンアップの進行状況 を表示できるようになりました。pg_wait_events システムビューが追加されました。この新しいビューと pg_stat_activity ビューを組み合わせることで、アクティブなセッションが待機している理由をより深く理解できます。

アップグレード

クラスタを PolarDB for PostgreSQL 17 にアップグレードすることをお勧めします。クラスタを PolarDB for PostgreSQL PostgreSQL 17 互換バージョンにアップグレードすると、PostgreSQL コミュニティの最新情報を入手し、問題解決とデータベースのベストプラクティスの学習のためのより多くのリソースとサポートを受けることができます。

クラスタを PolarDB for PostgreSQL 16 から PolarDB for PostgreSQL 17 にアップグレードした後、ほとんどのデータ型、ビルトイン関数、テーブル列、オブジェクトは変更されません。したがって、技術的な改善点を理解する際に、複雑な変更について心配する必要はありません。論理レプリケーションを使用すると、ほぼ 100% の互換性を実現できます。(DTS をお勧めします。詳細については、「PolarDB for PostgreSQL バージョン間でデータを移行する」をご参照ください)。以下のセクションでは、改善点について説明します。

説明

次のセクションでは、PolarDB for PostgreSQL 17 と PolarDB for PostgreSQL 16 の違いについて説明します。別の PolarDB for PostgreSQL リリースと PolarDB for PostgreSQL 16 の違いについては、「PostgreSQL 16 と PostgreSQL 15 の違いおよびPostgreSQL 15 と PostgreSQL 14 の違い」をご参照ください。

データ型

  • ago は、間隔値の末尾にのみ表示されます。

  • 複数の空の間隔単位は許可されません。

ビュー

  • pgrowlocks ロックモードの出力ラベルが更新されました。ShareFor Share に、Key ShareFor Key Share に変更されました。

  • 2 つの WAL ファイル名関数のファイル境界処理が更新されました。PostgreSQL 17 より前のリリースでは、LSN がファイルセグメント境界上にある場合、pg_walfile_name() 関数と pg_walfile_name_offset() 関数は前の LSN セグメント番号を返していました。PostgreSQL 17 では、これら 2 つの関数は現在の LSN セグメントを返します。

  • information_schema の element_types テーブルから domain_default フィールドが削除されました。

  • pg_stat_statements の I/O ブロック読み取り/書き込みタイミング統計列の名前が変更されました。blk_read_time 列は shared_blk_read_time に、blk_write_time 列は shared_blk_write_time に名前が変更されました。

  • デフォルトの統計ターゲットの表現が変更されました。pg_attribute.attstattarget 列と pg_statistic_ext.stxstattarget 列は、デフォルトの統計ターゲットを表すために NULL を使用します。

  • ローカライズ関連の列の名前が変更されました。pg_collation.colliculocale 列は colllocale に、pg_database.daticulocale 列は datlocale に名前が変更されました。

  • VACUUM 操作の進行状況を追跡する列が再構築されました。max_dead_tuples 列は max_dead_tuple_bytes に、num_dead_tuples 列は num_dead_item_ids に名前が変更され、dead_tuple_bytes 列が追加されました。

  • SLRU 関連の統計列の名前が変更されました。pg_stat_slru システムビューと pg_stat_reset_slru() 関数で受け入れられる列名が変更されました。

関数と式

メンテナンス操作(ANALYZE、CLUSTER、CREATE INDEX、CREATE MATERIALIZED VIEW、REFRESH MATERIALIZED VIEW、REINDEX、VACUUM)中に、不正アクセスを防ぐために、安全な search_path を使用する必要があります。デフォルト以外のスキーマを参照する必要がある式インデックスとマテリアライズドビューで使用される関数は、作成時に検索パスを指定する必要があります。

権限

  • 初期セッションユーザーのスーパーユーザー状態の SET SESSION AUTHORIZATION 処理が更新されました。新しい処理は、接続時ではなく、SET SESSION AUTHORIZATION コマンドが実行されたときのセッションユーザーのスーパーユーザー状態に基づいています。

  • データベースごとのユーザーをシミュレートする db_user_namespace 機能は、使用頻度が低いため削除されました。

その他

  • old_snapshot_threshold サーバーパラメータが削除されました。このパラメータを使用すると、vacuum プロセスは実行中のトランザクションでまだ表示されている可能性のある行を削除でき、後でアクセスしたときに snapshot too old が発生します。

  • サポート終了(EOL)に達した pgAdmin III で使用されていた adminpack 拡張機能が削除されました。

  • trace_recovery_messages サーバーパラメータが削除されました。