PostgreSQL 16 發布!

由 PostgreSQL 全球開發團隊發表於 2023-09-14
PostgreSQL 專案

2023 年 9 月 14 日 – PostgreSQL 全球開發團隊於今日宣布發布 PostgreSQL 16,這是世界上最先進的開源資料庫的最新版本。

PostgreSQL 16 提升了效能,在查詢平行化、大量資料載入和邏輯複製方面有顯著的改進。此版本為開發者和管理者提供了許多功能,包括更多的 SQL/JSON 語法、工作負載的新監控統計資訊,以及在定義跨大型叢集管理政策的存取控制規則時,具有更大的彈性。

PostgreSQL 核心團隊成員 Dave Page 表示:「隨著關聯式資料庫模式的演變,PostgreSQL 仍在搜尋和管理大規模資料方面取得效能提升。PostgreSQL 16 為使用者提供了更多擴充和擴展其工作負載的方法,同時為他們提供了新的方法來深入了解和最佳化他們管理資料的方式。」

PostgreSQL 是一個以其可靠性和穩健性而聞名的創新資料管理系統,受益於全球開發者社群超過 25 年的開源開發,並且已成為各種規模組織首選的開源關聯式資料庫。

效能改進

PostgreSQL 16 通過新的查詢規劃器最佳化,改進了現有 PostgreSQL 功能的效能。在此最新版本中,查詢規劃器可以平行化 FULLRIGHT 聯結,為使用帶有 DISTINCTORDER BY 子句的 彙總函式 的查詢產生更佳的最佳化計劃,利用增量排序來處理 SELECT DISTINCT 查詢,並最佳化 視窗函式,以便它們更有效率地執行。它還改進了 RIGHTOUTER「反聯結」,使用戶能夠識別未出現在聯結表中的列。

此版本包含使用 COPY 進行批量載入的改進,無論是單一還是並行操作,測試顯示在某些情況下效能提高了高達 300%。PostgreSQL 16 增加了對使用 libpq 的客戶端中 負載平衡 的支援,並改進了 vacuum 策略,從而降低了全表凍結的必要性。此外,PostgreSQL 16 引入了使用 SIMD 的 CPU 加速,同時支援 x86 和 ARM 架構,從而在處理 ASCII 和 JSON 字串以及執行陣列和子交易搜尋時獲得效能提升。

邏輯複製

邏輯複製 允許使用者將資料串流到其他 PostgreSQL 實例或可以解釋 PostgreSQL 邏輯複製協定的訂閱者。在 PostgreSQL 16 中,使用者可以從備用實例執行邏輯複製,這意味著備用伺服器可以將邏輯變更發布到其他伺服器。這為開發人員提供了新的工作負載分配選項,例如,使用備用伺服器而不是較繁忙的主要伺服器,以邏輯方式將變更複製到下游系統。

此外,PostgreSQL 16 對邏輯複製進行了多項效能改進。訂閱者現在可以使用平行工作程序應用大型交易。對於沒有 主鍵 的表,訂閱者可以使用 B 樹索引而不是循序掃描來尋找列。在某些情況下,使用者還可以透過使用二進位格式來加速初始表同步。

PostgreSQL 16 中對邏輯複製進行了多項存取控制改進,包括新的 預定義角色 pg_create_subscription,它授予使用者建立新邏輯訂閱的能力。最後,此版本開始新增對雙向邏輯複製的支援,引入了在來自不同發布者的兩個表之間複製資料的功能。

開發者體驗

PostgreSQL 16 新增了來自 SQL/JSON 標準的更多語法,包括構造器和謂詞,例如 JSON_ARRAY()JSON_ARRAYAGG()IS JSON。此版本還引入了使用底線作為千位分隔符(例如,5_432_000)和非十進位整數文字(例如,0x15380o124700b1010100111000)的功能。

使用 PostgreSQL 16 的開發人員還可以受益於 psql 中的新命令。這包括 \bind,它允許使用者準備參數化查詢並使用 \bind 替換變數(例如 SELECT $1::int + $2::int \bind 1 2 \g)。

PostgreSQL 16 改進了對 文字排序規則 的一般支援,排序規則提供了對文字進行排序的規則。PostgreSQL 16 預設使用 ICU 支援進行建置,從環境中確定預設的 ICU 地區設定,並允許使用者定義自定義的 ICU 排序規則。

監控

調整資料庫工作負載效能的一個關鍵方面是了解 I/O 操作對系統的影響。PostgreSQL 16 引入了 pg_stat_io,這是一個新的關鍵 I/O 指標來源,可用於對 I/O 存取模式進行精細分析。

此外,此版本在 pg_stat_all_tables 視窗中新增了一個欄位,用於記錄代表上次掃描表或索引的時間戳記。PostgreSQL 16 還透過記錄傳遞到參數化陳述式中的值,使 auto_explain 更易於閱讀,並提高了 pg_stat_statementspg_stat_activity 使用的查詢追蹤演算法的準確性。

存取控制 & 安全性

PostgreSQL 16 提供了更細緻的存取控制選項,並增強了其他安全性功能。此版本改進了 pg_hba.confpg_ident.conf 檔案的管理,包括允許對使用者和資料庫名稱進行正則表達式匹配,以及對外部設定檔案使用 include 指令。

此版本新增了幾個以安全性為導向的客戶端連線參數,包括 require_auth,它允許客戶端指定他們願意從伺服器接受哪些身份驗證參數,以及 sslrootcert="system",它表示 PostgreSQL 應該使用客戶端作業系統提供的受信任憑證授權單位 (CA) 儲存。 此外,此版本還新增了對 Kerberos 憑證委派的支援,允許諸如 postgres_fdwdblink 等擴充功能使用經過身份驗證的憑證連接到受信任的服務。

關於 PostgreSQL

PostgreSQL 是世界上最先進的開放原始碼資料庫,擁有由數千名使用者、貢獻者、公司和組織組成的全球社群。 PostgreSQL 建基於加州大學柏克萊分校超過 35 年的工程經驗,並以無與倫比的速度持續發展。 PostgreSQL 成熟的功能集不僅與頂級專有資料庫系統相媲美,而且在進階資料庫功能、可擴充性、安全性和穩定性方面超越了它們。

連結