PostgreSQL全球發展組宣布,PostgreSQL 18的第一個測試版已經可以下載。 此版本包含在PostgreSQL 18正式發布時的所有功能預覽,盡管在測試期間,版本的一些細節可能會有所變化。
PostgreSQL 18 特點亮點
以下是計劃在PostgreSQL 18中實現的一些功能亮點。 此列表不完整;有關計劃功能的完整列表,請參閱發布說明。
性能
PostgreSQL 18 引入了一個異步 I/O (AIO) 子系統。這個新的子系統可以提高 I/O 吞吐量并隱藏 I/O 延遲。在 Linux 上 io_uring 可以用于 AIO,基于 worker 的實現適用于所有平臺。這個初始版本支持文件系統讀取操作,例如順序掃描、位圖堆掃描和 vacuum,測試顯示性能提高了 2-3 倍。
這些性能提升也適用于查詢優化和新的索引功能。PostgreSQL 18增加了對多列B樹索引使用“跳過掃描”查找的支持,這可以提高省略一個或多個前綴索引列上的“=”條件的查詢的執行速度。此版本還包括對包含WHERE子句中OR和IN (...)語句的優化,以更好地利用最近的索引改進,這也可以提高查詢性能。此外,還有許多性能改進,用于PostgreSQL計劃和執行表連接,從改進哈希連接的整體性能到允許合并連接使用增量排序。
PostgreSQL 18還提供多種其他特性,這些特性可以提高其他查詢和維護操作的性能。PostgreSQL 18現在支持并行構建GIN索引,這些索引通常用于對JSON和全文數據的搜索。此版本還允許您定義具有非B樹唯一索引的分區鍵和物化視圖。PostgreSQL 18還提高了訪問多個關系的查詢的總體鎖定性能,并對分區表的查詢添加了多項改進,包括改進的剪枝和連接支持。PostgreSQL 18在文本處理方面的性能也有所提高,包括對upper/lower函數的一般速度提升和一個新的內置排序PG_UNICODE_FAST。
主要版本升級體驗
在PostgreSQL 18之前,進行主要版本升級后的重要步驟是運行ANALYZE以生成統計信息,這是幫助PostgreSQL選擇最高效查詢計劃的關鍵組件。根據PostgreSQL集群的大小和整體活動,這個過程可能非常耗時,并且在過程完成之前可能會對查詢性能產生影響。PostgreSQL 18引入了通過主要版本升級保留規劃器統計信息的能力,這有助于升級后的集群更快地達到預期的性能狀態。
此外,pg_upgrade,用于協助主要版本升級的工具,添加了幾個性能增強功能,以幫助加速包含許多對象(如表和序列)的升級。此版本還允許pg_upgrade根據--jobs標志的設置并行執行其檢查,并且還添加了--swap標志,該標志將交換升級目錄而不是復制、克隆或鏈接文件。
開發者體驗
PostgreSQL 18 引入了虛擬生成列,這些列在查詢執行期間即時計算列值,而不是必須存儲它們。這現在是生成列的默認選項。此外,現在可以邏輯地復制存儲的生成列。
此版本增加了在OLD、NEW、RETURNING、INSERT、UPDATE、DELETE和MERGE命令中訪問上一個()和當前()值的能力。此外,PostgreSQL 18通過uuidv7()函數增加了對UUIDv7生成的支持,使您能夠生成按時間戳排序的隨機UUID,以支持更好的緩存策略(此版本還添加了uuidv4()作為gen_rand_uuid的別名)。
現在在PostgreSQL 18中,您可以對使用非確定性排序的文本進行比較,使進行更復雜的模式匹配更加簡單。此外,這次發布引入了LIKE來幫助進行不區分大小寫的匹配。CASEFOLD
此版本還為 PRIMARY KEY 和 UNIQUE 添加了時間約束,或對范圍的約束,使用 WITHOUT OVERLAPS 子句,以及對 FOREIGN KEY 約束的 PERIOD 子句。
安全功能
PostgreSQL 18 引入了 oauth 認證,用戶可以使用通過 PostgreSQL 擴展支持的 OAuth 2.0 機制進行認證。此外,PostgreSQL 18 增加了幾個用于驗證和強制執行 FIPS 模式行為的功能,并且增加了 ssl_tls13_ciphers 以便用戶配置服務器可以使用的 TLS v1.3 加密套件。
此版本廢除了md5密碼認證,推薦使用SCRAM認證,該認證首次添加于PostgreSQL 10。md5認證將在未來的主版本發布中完全移除。此外,PostgreSQL 18增加了對遠程PostgreSQL實例進行SCRAM直通認證的支持,postgres_fdw和dblink。
監控和可觀測性
PostgreSQL 18 對 EXPLAIN 工具進行了更多細節的補充,該工具提供有關查詢計劃執行的信息,并且在此版本中,執行時會自動顯示訪問的緩沖區(數據存儲的基本單位)的數量。EXPLAIN ANALYZE此外,EXPLAIN ANALYZE 現在顯示在索引掃描期間進行的索引查找次數,并且 EXPLAIN ANALYZE VERBOSE 包括 CPU、WAL 和平均讀取統計信息。此版本還包含在 pg_stat_all_tables 中關于表的真空和分析總時間的信息,并且現在顯示每個連接的 I/O 和 WAL 利用率的統計數據。
PostgreSQL 18 還提供了更多關于在邏輯復制過程中發生的寫沖突的見解,并在日志和 pg_stat_subscription_stats 視圖中展示了這些信息。
其他亮點
從PostgreSQL 18開始,新的PostgreSQL集群默認啟用數據校驗和,用于驗證存儲數據的完整性。您可以使用命令選擇禁用此行為。請注意,這可能需要更改您的升級腳本。initdb --no-data-checksums
此外,一些約束功能中新增了 behaviors。 首先,外鍵和檢查約束都可以被設置為 NOT ENFORCED 并且 相反,可以使其可強制執行。此外,NOT NULL 約束現在保留其名稱,符合 SQL 標準的要求,支持 NOT VALID 和 NO INHERIT 子句,并且現在在繼承方面表現得更加一致。
pg_createsubscriber 現在支持一個 --all 標志,因此您可以使用一個命令為實例中的所有數據庫創建邏輯副本。此外,PostgreSQL 18 允許您使用本地表的定義通過 CREATE FOREIGN TABLE ... LIKE 命令創建外部表的模式定義。
PostgreSQL 18 還引入了PostgreSQL 7.4(2003年)以來的第一個新的PostgreSQL網絡協議版本(3.2)。libpq 仍然默認使用版本3.0,而客戶端(例如,驅動程序、連接池、代理)將添加對新協議版本的支持。
測試版時間表
這是18版本的第一個測試版發布。PostgreSQL項目將根據測試需求發布更多的測試版,并隨后發布一個或多個候選版本,直到2025年9月/10月左右的最終發布。
內容來源:發表于 2025-05-08 由 PostgreSQL 全球開發組,百度翻譯結果