PostgreSQL 15 Beta 1 發布!

發布於 2022-05-19,由 PostgreSQL Global Development Group
PostgreSQL 專案

PostgreSQL Global Development Group 宣布 PostgreSQL 15 的第一個 beta 版本現已開放下載。 此版本包含 PostgreSQL 15 正式發布時將提供的所有功能的預覽,但發布的一些細節可能會在 beta 期間發生變化。

您可以在發布說明中找到有關 PostgreSQL 15 中所有功能和變更的資訊

https://postgresql.dev.org.tw/docs/15/release-15.html

本著開源 PostgreSQL 社群的精神,我們強烈建議您在系統上測試 PostgreSQL 15 的新功能,以幫助我們消除可能存在的錯誤或其他問題。 雖然我們不建議您在生產環境中執行 PostgreSQL 15 Beta 1,但我們鼓勵您找到針對此 beta 版本執行典型應用程式工作負載的方法。

您的測試和反饋將幫助社群確保 PostgreSQL 15 版本維持我們交付世界上最先進的開源關聯式資料庫的穩定、可靠版本的標準。 請閱讀更多關於我們的 beta 測試流程以及您如何貢獻

https://postgresql.dev.org.tw/developer/beta/

PostgreSQL 15 功能亮點

開發者體驗

PostgreSQL 15 增加了簡化和增強開發者體驗的新功能。

此版本引入了 MERGE,這是一個 SQL 標準命令,用於有條件地對資料執行寫入操作(INSERTUPDATEDELETE)。 在此版本之前,相同的行為可以使用存儲程序來完成,或者在有限的基礎上,使用 INSERT ... ON CONFLICT。 使用 PostgreSQL 15,開發人員可以編寫簡單、具表達力的查詢,以選擇要採取的適當資料修改操作。

PostgreSQL 在 2012 年作為 9.2 版本的一部分增加了對 JSON 的支持。 五年後發布的 SQL/JSON 標準規定了用於訪問和操作存儲在關係資料庫中的 JSON 資料的各種介面。 PostgreSQL 15 通過包含更多標準 SQL/JSON 函數,建立在其對 SQL/JSON 路徑語言的現有支持之上。 這些包括 SQL/JSON 建構函式查詢/內省函數,以及將 JSON 資料轉換為表的能力。

PostgreSQL 15 增加了 更多正規表示式函數,包括 regexp_countregexp_instrregexp_likeregexp_substr。 在 PostgreSQL 15 中引入的用於將 range 資料類型聚合到 multirange 類型中的 range_agg 函數,現在也支持聚合 multirange 類型。

效能

PostgreSQL 15 繼續建立在過去幾個版本中的效能提升之上。 此版本包括在對較大資料集進行排序時,資料排序速度的顯著提升。 特別是,這些是超過 work_mem 參數的資料集。

PostgreSQL 15 的效能提升擴展到各種查詢類型。 這包括為 SELECT DISTINCT 語句引入並行化,以及改進使用 row_number()rank()count()視窗函數的效能。 使用 PostgreSQL 外部資料包裝器 postgres_fdw 在遠端 PostgreSQL 伺服器上管理資料的應用程式現在可以啟用 並行提交交易。 對於涉及具有分割區的表的查詢,也有一些效能增強。

PostgreSQL 系統和 TOAST 表(用於存儲大於單個頁面 (8kB) 的資料)現在可以利用 索引重複資料刪除,並從更小的索引和更快的查找中受益。

psql \copy 命令(用於批量載入資料)在 PostgreSQL 15 中也具有效能改進。

備份、歸檔和壓縮

建立在引入 LZ4 壓縮的前一個版本之上,PostgreSQL 15 為各種組件增加了對 Zstandard (zstd) 壓縮的支持。

pg_basebackup(用於對 PostgreSQL 集群進行完整備份的工具)現在支持使用 Gzip、LZ4 或 Zstandard 壓縮的伺服器端壓縮。 pg_basebackup 用戶端現在還可以解壓縮使用 LZ4 和 Zstandard 壓縮的備份。

現在可以使用 wal_compression 配置參數,使用 LZ4 和 Zstandard 壓縮來壓縮預寫日誌 (WAL) 檔案。 此外,PostgreSQL 15 還添加了 recovery_prefetch 選項,該選項可以通過預取資料區塊來幫助加速恢復操作。 此版本添加了一個名為 pg_walinspect 的新模組,可讓您直接從 SQL 檢查有關 WAL 檔案的資訊。

PostgreSQL 15 允許您在不執行 shell 命令的情況下執行 WAL 歸檔,方法是指定 archive_library。 示例 WAL 歸檔庫可以在 basic_archive 模組中找到。 此外,擴展現在可以定義自己的 WAL 資源管理器,使其能夠與邏輯複製一起工作。

邏輯複製

PostgreSQL 15 引入了邏輯複製的 列過濾行過濾 。 此外,用戶現在可以方便地指定發布模式中的所有表,而以前只能對資料庫中的所有表執行此操作。

此版本還增加了對處理 衝突的更多支持。 訂閱者現在可以指定 disable_on_error 以在錯誤時自動停止邏輯複製。 PostgreSQL 15 允許使用 ALTER SUBSCRIPTION ... SKIP 命令跳過應用變更。

管理

PostgreSQL 15 引入了 用於日誌記錄的 jsonlog 格式。 這允許許多執行結構化日誌聚合和分析的程序使用 PostgreSQL 日誌。 PostgreSQL 15 現在默認記錄速度慢的檢查點和自動清理操作。

psql 用戶端現在有一個名為 \dconfig 的命令,用於檢查配置參數的值。 默認情況下,\dconfig 顯示任何未設置為其默認值的配置參數。

PostgreSQL 15 現在將所有伺服器級別的統計資訊存儲在共享記憶體中。 伺服器不再運行統計資訊收集器進程。

現在 ALTER TABLE 指令可以修改資料表的 ACCESS METHOD,用於設定資料表使用的儲存系統。

安全性

PostgreSQL 15 在 PostgreSQL 叢集中建立資料庫時引入了新的預設行為。當建立新的資料庫時,除了資料庫擁有者(由 pg_database_owner 代表)和超級使用者之外,其他使用者將無法在預設的 public 綱要中建立物件。

PostgreSQL 15 新增了對「安全調用者檢視表」的支援,它使用執行查詢的使用者的權限,而不是建立檢視表的使用者的權限。

PostgreSQL 15 中,未授權的使用者現在可以被 授予權限,透過 SETALTER SYSTEM 變更伺服器變數。

其他功能

PostgreSQL 15 中新增了許多其他新功能和改進。其中許多可能對您的使用案例也有幫助。請參閱 發布說明,以獲取新功能和已變更功能的完整清單。

https://postgresql.dev.org.tw/docs/15/release-15.html

錯誤和相容性測試

每個 PostgreSQL 版本的穩定性在很大程度上取決於您,社群成員,使用您的工作負載和測試工具測試即將推出的版本,以便在 PostgreSQL 15 正式發布之前發現錯誤和回歸。由於這是一個 Beta 版本,因此資料庫行為、功能細節和 API 仍有可能進行小幅變更。您的回饋和測試將有助於確定新功能的最終調整,因此請儘早進行測試。使用者測試的品質有助於決定我們何時可以進行最終版本發布。

未解決問題的列表在 PostgreSQL 維基中公開提供。您可以使用 PostgreSQL 網站上的這個表單 回報錯誤

https://postgresql.dev.org.tw/account/submitbug/

Beta 時程

這是 15 版的第一個 Beta 版本。PostgreSQL 專案將根據測試需要發布額外的 Beta 版本,然後發布一個或多個候選版本,直到 2022 年底的最終版本。如需更多資訊,請參閱 Beta 測試頁面。

連結