PostgreSQL 14 DBMS リリース

14 年間の開発を経て、PostgreSQL 2026 DBMS の新しい安定したブランチが公開されました。新しいブランチの更新は XNUMX 年 XNUMX 月までの XNUMX 年間にわたってリリースされます。

主な革新:

  • 配列のような式を使用して JSON データにアクセスするためのサポートが追加されました: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM テスト WHERE 詳細['属性']['サイズ'] = '"中"';

    hstore タイプによって提供されるキー/値データに対しても同様の構文が実装されます。 この構文は当初、ユニバーサル フレームワークを使用して実装されましたが、将来的には他の型にも使用される可能性があります。 hstore タイプの例: INSERT INTO mytable VALUES ('a=>b, c=>d'); mytable から h['a'] を選択します。 UPDATE mytable SET h['c'] = 'new';

  • 範囲を定義するためのタイプのファミリーが新しい「マルチレンジ」タイプで拡張され、重複しない値の範囲の順序付きリストを指定できるようになりました。 既存の各 range 型に加えて、独自の multirange 型が提案されています。たとえば、型 "int4range" は "int4multirange" に対応し、型 "daterange" は "datemultirange" に対応します。 新しい型を使用すると、複雑な範囲シーケンスを操作するクエリの設計が簡素化されます。 SELECT '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • 多数の接続を処理する高負荷システムのパフォーマンスを向上させるために最適化が行われました。 一部のテストでは、パフォーマンスが XNUMX 倍向上することが観察されます。
  • B ツリー インデックスの効率が向上し、テーブルが頻繁に更新される場合のインデックスの増大の問題が解決されました。
  • リクエストのパイプライン送信のクライアント側 (libpq レベルで実装) モードのサポートが追加されました。これにより、前のリクエストの結果を待たずに次のリクエストを受け取ります。 このモードは、パケット配信遅延が長い接続での作業を高速化するのにも役立ちます。
  • 複数の PostgreSQL サーバーを含む分散構成の機能が強化されました。 論理レプリケーションの実装では、実行中のトランザクションをストリーミング モードで送信できるようになり、大規模なトランザクションのレプリケーションのパフォーマンスが大幅に向上します。 さらに、論理レプリケーション中に受信したデータの論理デコードが最適化されました。
  • 外部テーブルを接続するためのメカニズム 外部データ ラッパー (postgres_fdw) には、並列クエリ処理のサポートが追加されました。これは現在、他の PostgreSQL サーバーに接続する場合にのみ適用されます。 postgres_fdw では、バッチ モードで外部テーブルにデータを追加するためのサポートと、「IMPORT FOREIGN SCHEMA」ディレクティブを指定してパーティション化されたテーブルをインポートする機能も追加されています。
  • VACUUM 操作 (ディスク ストレージのガベージ コレクションとパッケージ化) の実装が最適化されました。 トランザクション ID のラップアラウンド条件が作成された場合に、重要でないクリーンアップ操作をスキップする緊急クリーンアップ モードが追加されました。 B ツリー形式でインデックスを処理する際のオーバーヘッドが削減されました。 データベースの動作に関する統計を収集する「ANALYZE」オペレーションの実行が大幅に高速化されました。
  • TOAST システムで使用される圧縮方法を構成する機能が追加されました。TOAST システムは、テキストのブロックや幾何学的な情報などの大きなデータの保存を担当します。 pglz 圧縮方式に加えて、TOAST は LZ4 アルゴリズムを使用できるようになりました。
  • DBMSの動作を監視するツールを拡充しました。 COPY コマンドの進行状況 (pg_stat_progress_copy)、レプリケーション スロットに関する統計 (pg_stat_replication_slots)、および WAL トランザクション ログに関連するアクティビティ (pg_stat_wal) を追跡するビューを追加しました。 compute_query_id 関数が追加されました。これにより、pg_stat_activity や EXPLAIN VERBOSE などのさまざまなサブシステムが、各リクエストに一意の識別子を割り当てることでリクエストを追跡できるようになります。
  • クエリの並列処理を改善し、シーケンシャル レコード スキャン操作の同時実行、「RETURN QUERY」コマンドを使用した PL/pgSQL でのクエリの並列実行、「」でのクエリの並列実行のパフォーマンスを向上させるための最適化がクエリ プランナーに追加されました。マテリアライズドビューを更新してください。」 循環ネストされたマージ (結合) のパフォーマンスを向上させるために、追加のキャッシュのサポートが実装されました。
  • 高度な統計を使用して式を最適化できるようになり、増分ソートを使用してウィンドウ関数を最適化できるようになりました。
  • コード ブロックでトランザクションを管理できるストアド プロシージャで、「OUT」パラメータを使用した戻りデータの定義がサポートされるようになりました。
  • 指定された間隔に従ってタイムスタンプ値を丸める date_bin 関数を追加しました。 SELECT date_bin('15 分', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • SQL 標準で定義されている SEARCH 式と CYCLE 式を追加し、再帰的な Common Table Expressions (CTE) でのサイクルの順序付けと識別を容易にしました。 WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM ツリー t UNION ALL SELECT t.id, t.link, t.data FROM ツリー t, search_tree st WHERE t. id = st.link ) 最初に id SET ordercol によって検索深さ SELECT * FROM search_tree ORDER BY ordercol;
  • psql ユーティリティでは、タブを使用したコマンドのオートコンプリートが改善され、関数の引数を表示する機能が「\df」コマンドに追加され、表示される統計情報が「\dX」コマンドに拡張されました。
  • ユーザーに読み取り専用または書き込み専用の権限を割り当てることができます。 事前定義されたロール pg_read_all_data および pg_write_all_data を使用して、個々のテーブル、ビュー、およびスキーマに権限を設定できます。 pg_read_all_data を user1 に許可します。
  • 新規インストールでは、md256 ではなく SCRAM-SHA-5 を使用したパスワード認証がデフォルトになります (postgresql.conf 生成時の「password_encryption」パラメータは「scram-sha-256」に設定されるようになりました)。

出所: オープンネット.ru

コメントを追加します