PostgreSQL 17 正式發布!

發布於 2024-09-26,作者:PostgreSQL 全球開發團隊
PostgreSQL 專案

PostgreSQL 全球開發團隊於今日宣布發布 PostgreSQL 17,此為世界上最先進的開源資料庫的最新版本。

PostgreSQL 17 建立在數十年開源開發的基礎上,提高了效能和可擴展性,同時適應了新興的資料存取和儲存模式。 此版本的 PostgreSQL 增加了顯著的整體效能提升,包含真空回收 (vacuum) 的記憶體管理實作進行了全面改造、儲存存取優化、針對高並發工作負載的改進、批量載入和匯出加速,以及索引的查詢執行改進。 PostgreSQL 17 具有多項功能,可讓全新的工作負載和關鍵系統受益,例如透過 SQL/JSON JSON_TABLE 指令提升開發人員體驗,以及增強邏輯複製,簡化高可用性工作負載和主要版本升級的管理。

PostgreSQL 核心團隊成員 Jonathan Katz 表示:「PostgreSQL 17 強調了推動 PostgreSQL 開發的全球開源社群,如何構建增強功能來幫助處於資料庫旅程各個階段的使用者。無論是提升大規模運作資料庫的效能,還是構建在令人愉悅的開發人員體驗之上的新功能,PostgreSQL 17 都將增強您的資料管理體驗。」

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

系統級效能提升

PostgreSQL 真空回收 (vacuum) 程序對於健康運作至關重要,需要伺服器實例資源才能運作。 PostgreSQL 17 引入了一種新的內部記憶體結構,用於真空回收 (vacuum),其消耗的記憶體最多可減少 20 倍。 這提高了真空回收 (vacuum) 的速度,並減少了共享資源的使用,使其對您的工作負載更有效用。

PostgreSQL 17 繼續改進其 I/O 層的效能。 由於 預寫式日誌WAL)處理的改進,高並發工作負載的寫入吞吐量可能會提高 2 倍。 此外,新的串流 I/O 介面加快了循序掃描(從表格讀取所有資料)的速度,以及 ANALYZE 更新計畫器統計資料的速度。

PostgreSQL 17 還將其效能提升擴展到查詢執行。 PostgreSQL 17 提高了使用 B 樹索引(PostgreSQL 中的預設索引方法)的 IN 子句查詢的效能。 此外,BRIN 索引現在支援平行建構。 PostgreSQL 17 包含多項查詢計畫的改進,包含針對 NOT NULL 約束的優化,以及處理 通用表格運算式WITH 查詢)的改進。 此版本增加了對 SIMD(單指令/多重資料)的更多支援,以加速計算,包含使用 AVX-512 來加速 bit_count 函數。

進一步擴展強大的開發人員體驗

PostgreSQL 是第一個新增 JSON 支援的關聯式資料庫 (2012),而 PostgreSQL 17 則在其 SQL/JSON 標準的實作上添加了更多功能。 JSON_TABLE 現在可以在 PostgreSQL 17 中使用,讓開發人員可以將 JSON 資料轉換為標準的 PostgreSQL 表格。 PostgreSQL 17 現在支援 SQL/JSON 建構子 (JSONJSON_SCALARJSON_SERIALIZE) 和 查詢函數 (JSON_EXISTSJSON_QUERYJSON_VALUE),讓開發人員有更多與 JSON 資料互動的方式。 此版本增加了更多 jsonpath 運算式,重點是將 JSON 資料轉換為原生 PostgreSQL 資料類型,包含數值、布林、字串和日期/時間類型。

PostgreSQL 17 為 MERGE 添加了更多功能,該功能用於條件更新,包含 RETURNING 子句和更新 檢視表 的能力。 此外,PostgreSQL 17 具有用於批量載入和資料匯出的新功能,包含使用 COPY 命令匯出大型列時,效能提升了 2 倍。 當來源和目標編碼匹配時,COPY 效能也有所提高,並且包含一個新選項 ON_ERROR,即使發生插入錯誤,也能讓匯入繼續。

此版本擴展了在分割區中管理資料和跨遠端 PostgreSQL 實例分發資料的功能。 PostgreSQL 17 支援在 分割表格 上使用身分欄位和排除約束。 用於在遠端 PostgreSQL 實例上執行查詢的 PostgreSQL 外部資料包裝器postgres_fdw)現在可以將 EXISTSIN 子查詢推送到遠端伺服器,以實現更有效率的處理。

PostgreSQL 17 還包含一個內建、平台獨立、不可變的定序提供器,保證是不可變的,並且提供與 C 定序相似的排序語義,只是使用 UTF-8 編碼而不是 SQL_ASCII。 使用這個新的定序提供器可保證您的基於文字的查詢將傳回相同的排序結果,無論您在哪裡執行 PostgreSQL。

用於高可用性和主要版本升級的邏輯複製增強功能

邏輯複製用於跨多個用例即時串流資料。 然而,在此版本之前,想要執行主要版本升級的使用者必須放棄 邏輯複製槽,這需要在升級後將資料重新同步到訂閱者。 從 PostgreSQL 17 的升級開始,使用者不必放棄邏輯複製槽,簡化了在使用邏輯複製時的升級流程。

PostgreSQL 17 現在包含邏輯複製的故障轉移控制,使其在高可用性環境中部署時更具彈性。 此外,PostgreSQL 17 引入了 pg_createsubscriber 命令列工具,用於將實體副本轉換為新的邏輯副本。

管理安全性和運營的更多選項

PostgreSQL 17 進一步擴展了使用者管理資料庫系統整體生命週期的方式。PostgreSQL 新增了一個 TLS 選項,sslnegotiation,允許使用者在使用 ALPN 時(在 ALPN 目錄中註冊為 postgresql)執行直接的 TLS 握手。PostgreSQL 17 還新增了 pg_maintain 預定義角色,賦予使用者執行維護操作的權限。

PostgreSQL 內建的備份工具 pg_basebackup 現在支援增量備份,並新增了 pg_combinebackup 工具來重建完整備份。此外,pg_dump 包含了一個名為 --filter 的新選項,讓您可以選擇在生成傾印檔案時要包含哪些物件。

PostgreSQL 17 還包含了對監控和分析功能的增強。EXPLAIN 現在會顯示本地 I/O 區塊讀取和寫入所花費的時間,並包含兩個新選項:SERIALIZEMEMORY,有助於了解網路傳輸的資料轉換所花費的時間,以及使用了多少記憶體。PostgreSQL 17 現在報告 清理索引的進度,並新增了 pg_wait_events 系統檢視表,該檢視表與 pg_stat_activity 結合使用時,可以更深入地了解活動中的連線正在等待的原因。

其他功能

PostgreSQL 17 中新增了許多其他新功能和改進,這些功能和改進可能對您的使用案例也有幫助。有關新增和變更功能的完整列表,請參閱發布說明

關於 PostgreSQL

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

連結