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 包括查詢執行的效能改進。此版本增加了更多的查詢並行性,包括允許 FULL
和 RIGHT
joins 以並行方式執行,以及並行執行 string_agg
和 array_agg
聚合函數。此外,PostgreSQL 16 可以在 SELECT DISTINCT
查詢中使用增量排序。對於 window 查詢 也有一些優化,改進了 RANGE
和 LIST
分割區的查找,並支援 RIGHT
和 OUTER
查詢中的 "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
以外的索引在 UPDATE
或 DELETE
操作期間執行查找,以及允許在初始化期間使用二進位格式複製表格。
PostgreSQL 16 繼續實作 SQL/JSON 標準來操作 JSON 資料,包括支援 SQL/JSON 建構子(例如 JSON_ARRAY()
、JSON_ARRAYAGG()
等)和識別函數 (IS JSON
)。此版本還新增了 SQL 標準 ANY_VALUE
聚合函數,該函數從聚合集中傳回任何任意值。為了方便起見,PostgreSQL 16 現在允許您指定非十進位整數文字,例如 0xff
、0o777
和 0b101010
,並使用底線作為千位分隔符,例如 5_432
。
此版本將擴展查詢協議的支援新增到 psql
用戶端。使用者可以執行查詢,例如 SELECT $1 + $2
,並使用 \bind
命令來替換變數。
PostgreSQL 16 繼續讓使用者能夠授予對功能的特權存取權,而無需使用新的 預定義角色 的超級使用者。這些角色包括 pg_maintain
(啟用執行諸如 VACUUM
、ANALYZE
、REINDEX
等操作)和 pg_create_subscription
(允許使用者建立邏輯複製訂閱)。此外,從此版本開始,邏輯複製訂閱者在表格上執行交易時,將以表格所有者的身份執行,而不是以超級使用者的身份執行。
PostgreSQL 16 現在允許您在 pg_hba.conf
和 pg_ident.conf
檔案中使用正則表達式來匹配使用者和資料庫名稱。此外,PostgreSQL 16 增加了在 pg_hba.conf
和 pg_ident.conf
中包含其他檔案的功能。PostgreSQL 16 還增加了對 SQL 標準 SYSTEM_USER
關鍵字的支援,該關鍵字傳回用於建立會話的使用者名稱和驗證方法。
PostgreSQL 16 還增加了對 Kerberos 憑證委派的支援,允許諸如 postgres_fdw
和 dblink
之類的擴展使用經過驗證的憑證連線到其他服務。此版本還為用戶端新增了幾個以安全為導向的連線參數。這包括 require_auth
,用戶端可以在其中指定它願意接受來自伺服器的哪些驗證方法。您現在可以將 sslrootcert
設定為 system
,以指示 PostgreSQL 使用用戶端作業系統提供的受信任憑證授權機構 (CA) 儲存區。
PostgreSQL 16 增加了幾個新的監控功能,包括新的 pg_stat_io
視窗,該視窗提供有關 I/O 統計資訊。此版本還提供了上次掃描表格或索引的時間戳記。用於 pg_stat_activity
的標準化演算法也進行了改進。
此版本包括對頁面凍結策略的改進,有助於 vacuuming 和其他維護操作的效能。PostgreSQL 16 還改進了對文字排序規則的整體支援,該規則提供文字排序方式的規則。PostgreSQL 16 將 ICU 設定為預設排序規則提供者,並增加了對預定義的 unicode
和 ucs_basic
排序規則的支援。
PostgreSQL 16 為 pg_dump
新增了其他壓縮選項,包括對 lz4
和 zstd
壓縮的支援。
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/
這是 16 版本的第一個 Beta 版發布。PostgreSQL 專案將根據測試需要發布其他 Beta 版,然後發布一個或多個候選版本,直到 2023 年底的最終版本。有關更多資訊,請參閱Beta 測試頁面。