PostgreSQL 14 發布

經過一年的開發,PostgreSQL 14 DBMS 的新穩定分支已經發布,新分支的更新將在五年內發布,直至 2026 年 XNUMX 月。

主要創新:

  • 新增了對使用類似陣列的表達式存取 JSON 資料的支援: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE 詳細資料['attributes']['size'] = '"medium"';

    hstore 類型提供的鍵/值資料實作了類似的語法。該語法最初是使用通用框架實現的,將來可能會用於其他類型。 hstore 類型範例:INSERT INTO mytable VALUES ('a=>b, c=>d');從 mytable 中選擇 h['a']; UPDATE mytable SET h['c'] = 'new';

  • 用於定義範圍的類型系列已透過新的「多範圍」類型進行了擴展,該類型可讓您指定非重疊值範圍的有序清單。除了現有的每個範圍類型之外,還提出了自己的多範圍類型,例如,類型“int4range”對應於“int4multirange”,類型“daterange”對應於“datemultirange”。新類型的使用簡化了操作複雜範圍序列的查詢的設計。選擇 '{[3,7), [8,9)}'::int4multirange;選擇 nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • 已進行最佳化以提高處理大量連接的高負載系統的效能。在某些測試中,觀察到性能提高了一倍。
  • 提高了B樹索引的效率,解決了表頻繁更新時索引成長的問題。
  • 新增了對請求的管道傳輸的客戶端(在 libpq 級別實現)模式的支持,該模式允許您透過發送下一個請求無需等待上一個請求的結果。此模式還有助於加快資料包傳輸延遲較長的連線的工作速度。
  • 涉及多個 PostgreSQL 伺服器的分散式配置的增強功能。在邏輯複製的實作中,現在可以以串流方式傳送正在執行的事務,這可以顯著提高大事務的複製效能。此外,也優化了邏輯複製期間接收到的資料的邏輯解碼。
  • 連接外部表的機制Foreign Data Wrapper (postgres_fdw)增加了對平行查詢處理的支持,目前僅適用於連接到其他PostgreSQL伺服器時。 postgres_fdw 還增加了對以批次模式向外部表添加資料的支持,以及透過指定「IMPORT FOREIGN SCHEMA」指令匯入分區表的功能。
  • 對 VACUUM 操作(磁碟儲存的垃圾收集和打包)的實作進行了最佳化。新增了緊急清理模式,如果建立了交易 ID 環繞條件,則該模式會跳過非必要的清理操作。減少處理 B 樹格式索引時的開銷。收集有關資料庫操作的統計資料的「ANALYZE」操作的執行速度已顯著加快。
  • 新增了配置 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 表達式,以便更輕鬆地排序和識別遞歸公用表表達式 (CTE) 中的循環。 WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree 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;
  • 新安裝預設使用 SCRAM-SHA-256 而不是 md5 進行密碼身份驗證(產生 postgresql.conf 時的“password_encryption”參數現在設定為“scram-sha-256”)。

來源: opennet.ru

添加評論