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-tree 索引(PostgreSQL 中的預設索引方法)的 IN 子句的查詢效能。此外,BRIN 索引現在支援並行構建。PostgreSQL 17 包含多項查詢規劃改進,包括對 NOT NULL 約束的最佳化,以及對公共表表達式(WITH 查詢)處理的改進。此版本增加了對 SIMD(單指令多資料)的支援,以加速計算,包括使用 AVX-512 來加速 bit_count 函式。
PostgreSQL 是第一個新增 JSON 支援(2012 年)的關係型資料庫,PostgreSQL 17 進一步增強了其對 SQL/JSON 標準的實現。PostgreSQL 17 現在支援 JSON_TABLE,允許開發人員將 JSON 資料轉換為標準的 PostgreSQL 表。PostgreSQL 17 現在支援 SQL/JSON 建構函式(JSON、JSON_SCALAR、JSON_SERIALIZE)和查詢函式(JSON_EXISTS、JSON_QUERY、JSON_VALUE),為開發人員提供了更多與 JSON 資料互動的方式。此版本增加了更多的 jsonpath 表示式,並側重於將 JSON 資料轉換為 PostgreSQL 的原生資料型別,包括數值、布林、字串和日期/時間型別。
PostgreSQL 17 為 MERGE 語句(用於條件更新)添加了更多功能,包括 RETURNING 子句以及更新檢視的能力。此外,PostgreSQL 17 在批次載入和資料匯出方面擁有了新的功能,包括使用 COPY 命令匯出大型行時效能最多可提高 2 倍。當源編碼和目標編碼匹配時,COPY 的效能也有所提升,並且增加了一個新的選項 ON_ERROR,允許匯入在遇到插入錯誤時繼續進行。
此版本擴充套件了管理分割槽資料和分散式在遠端 PostgreSQL 例項中的資料的功能。PostgreSQL 17 支援在分割槽表上使用標識列和排他約束。PostgreSQL 外部資料包裝器(postgres_fdw),用於在遠端 PostgreSQL 例項上執行查詢,現在可以將 EXISTS 和 IN 子查詢推送到遠端伺服器進行更高效的處理。
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 塊讀寫所花費的時間,幷包含兩個新選項:SERIALIZE 和 MEMORY,分別用於檢視資料轉換用於網路傳輸所花費的時間以及使用了多少記憶體。PostgreSQL 17 現在報告索引 VACUUM 的進度,並添加了 pg_wait_events 系統檢視,該檢視與 pg_stat_activity 結合使用時,可以更深入地瞭解活動會話等待的原因。
PostgreSQL 17 還添加了許多其他新功能和改進,可能對您的用例也有幫助。請參閱發行說明以獲取新功能和更改功能的完整列表。
PostgreSQL 是世界上最先進的開源資料庫,擁有由數千名使用者、貢獻者、公司和組織組成的全球社群。PostgreSQL 建立在加州大學伯克利分校 35 年多的工程開發基礎上,並以無與倫比的發展速度持續進步。PostgreSQL 成熟的功能集不僅可以與頂級專有資料庫系統相媲美,而且在高階資料庫功能、可擴充套件性、安全性和穩定性方面還超越了它們。