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 コンストラクタ関数
JSON、JSON_SCALAR、JSON_SERIALIZEと、クエリ関数JSON_EXISTS、JSON_QUERY、JSON_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 文に表示されるようになりました。この文には、
SERIALIZEとMEMORYという 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ロックモードの出力ラベルが更新されました。ShareはFor Shareに、Key ShareはFor 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サーバーパラメータが削除されました。