PostgreSQL 16 Beta 1 已發布!

由 PostgreSQL 全球開發團隊於 2023-05-25 發布
PostgreSQL 專案

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

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

https://postgres.tw/docs/16/release-16.html

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

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

https://postgres.tw/developer/beta/

PostgreSQL 16 功能亮點

效能

PostgreSQL 16 包括查詢執行的效能改進。此版本增加了更多的查詢並行性,包括允許 FULLRIGHT joins 以並行方式執行,以及並行執行 string_aggarray_agg 聚合函數。此外,PostgreSQL 16 可以在 SELECT DISTINCT 查詢中使用增量排序。對於 window 查詢 也有一些優化,改進了 RANGELIST 分割區的查找,並支援 RIGHTOUTER 查詢中的 "anti-joins"。

PostgreSQL 16 也可以使用 COPY 將並行批量載入資料的效能提高最多 300%。

此版本還引入了對使用 SIMD 進行 CPU 加速的支援,適用於 x86 和 ARM 架構,包括對處理 ASCII 和 JSON 字串以及陣列和子交易搜尋的優化。此外,PostgreSQL 16 還為 libpq(PostgreSQL 的用戶端程式庫)引入了 負載平衡

邏輯複製增強

邏輯複製讓 PostgreSQL 使用者可以將資料即時串流到其他 PostgreSQL 或其他實現邏輯協議的外部系統。在 PostgreSQL 16 之前,使用者只能在主要實例上建立邏輯複製發布者。PostgreSQL 16 增加了在備用實例上執行邏輯解碼的功能,為使用者提供了更多分配工作負載的選項,例如,使用比主要實例不那麼繁忙的備用實例來邏輯複製變更。

PostgreSQL 16 還包括對邏輯複製的幾項效能改進。這包括允許訂閱者並行應用大型交易,使用 PRIMARY KEY 以外的索引在 UPDATEDELETE 操作期間執行查找,以及允許在初始化期間使用二進位格式複製表格。

開發者體驗

PostgreSQL 16 繼續實作 SQL/JSON 標準來操作 JSON 資料,包括支援 SQL/JSON 建構子(例如 JSON_ARRAY()JSON_ARRAYAGG() 等)和識別函數 (IS JSON)。此版本還新增了 SQL 標準 ANY_VALUE 聚合函數,該函數從聚合集中傳回任何任意值。為了方便起見,PostgreSQL 16 現在允許您指定非十進位整數文字,例如 0xff0o7770b101010,並使用底線作為千位分隔符,例如 5_432

此版本將擴展查詢協議的支援新增到 psql 用戶端。使用者可以執行查詢,例如 SELECT $1 + $2,並使用 \bind 命令來替換變數。

安全性功能

PostgreSQL 16 繼續讓使用者能夠授予對功能的特權存取權,而無需使用新的 預定義角色 的超級使用者。這些角色包括 pg_maintain(啟用執行諸如 VACUUMANALYZEREINDEX 等操作)和 pg_create_subscription(允許使用者建立邏輯複製訂閱)。此外,從此版本開始,邏輯複製訂閱者在表格上執行交易時,將以表格所有者的身份執行,而不是以超級使用者的身份執行。

PostgreSQL 16 現在允許您在 pg_hba.confpg_ident.conf 檔案中使用正則表達式來匹配使用者和資料庫名稱。此外,PostgreSQL 16 增加了在 pg_hba.confpg_ident.conf 中包含其他檔案的功能。PostgreSQL 16 還增加了對 SQL 標準 SYSTEM_USER 關鍵字的支援,該關鍵字傳回用於建立會話的使用者名稱和驗證方法。

PostgreSQL 16 還增加了對 Kerberos 憑證委派的支援,允許諸如 postgres_fdwdblink 之類的擴展使用經過驗證的憑證連線到其他服務。此版本還為用戶端新增了幾個以安全為導向的連線參數。這包括 require_auth,用戶端可以在其中指定它願意接受來自伺服器的哪些驗證方法。您現在可以將 sslrootcert 設定為 system,以指示 PostgreSQL 使用用戶端作業系統提供的受信任憑證授權機構 (CA) 儲存區。

監控和管理

PostgreSQL 16 增加了幾個新的監控功能,包括新的 pg_stat_io 視窗,該視窗提供有關 I/O 統計資訊。此版本還提供了上次掃描表格或索引的時間戳記。用於 pg_stat_activity 的標準化演算法也進行了改進。

此版本包括對頁面凍結策略的改進,有助於 vacuuming 和其他維護操作的效能。PostgreSQL 16 還改進了對文字排序規則的整體支援,該規則提供文字排序方式的規則。PostgreSQL 16 將 ICU 設定為預設排序規則提供者,並增加了對預定義的 unicodeucs_basic 排序規則的支援。

PostgreSQL 16 為 pg_dump 新增了其他壓縮選項,包括對 lz4zstd 壓縮的支援。

其他值得注意的變更

PostgreSQL 16 移除了 promote_trigger_file 選項來啟用備用伺服器的提升。使用者應使用 pg_ctl promote 命令或 pg_promote() 函數來提升備用伺服器。

PostgreSQL 16 導入了 Meson 建置系統,最終將取代 Autoconf。此版本也新增了對開發中功能的基本支援,這些功能將在未來版本中得到改進。這包括啟用 DirectIO 的開發人員標記,以及當訂閱者中指定 origin=none 時,可以使用邏輯複製在兩個表格之間進行雙向複製。

對於 Windows 安裝,PostgreSQL 16 現在支援最低版本 Windows 10。

其他功能

PostgreSQL 16 新增了許多其他新功能和改進。其中許多功能可能對您的使用案例也有幫助。請參閱版本說明,以取得完整的新增和變更功能列表。

https://postgres.tw/docs/16/release-16.html

錯誤與相容性測試

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

未解決的問題列表可在 PostgreSQL wiki 中公開取得。您可以使用 PostgreSQL 網站上的此表單回報錯誤

https://postgres.tw/account/submitbug/

Beta 版發布時程

這是 16 版本的第一個 Beta 版發布。PostgreSQL 專案將根據測試需要發布其他 Beta 版,然後發布一個或多個候選版本,直到 2023 年底的最終版本。有關更多資訊,請參閱Beta 測試頁面。

連結