全部產品
Search
文件中心

PolarDB:【新版本】PolarDB PostgreSQL版 17版本正式發布上線

更新時間:Nov 12, 2025

PolarDB PostgreSQL版相容PostgreSQL 17的版本正式發布上線。PostgreSQL 17版本通過效能提升、營運簡化和功能擴充,進一步提升資料庫使用的體驗。

版本介紹

在社區PostgreSQL 17基礎上,PolarDB還支援一些專屬的功能,例如時空引擎GanosBase,全域計畫快取,GBK/GB18030 字元集等。在PolarDB PostgreSQL版 17的第一個發布版本中,即支援以下外掛程式:hlllog_fdwmysql_fdwpasepg_bigmpg_cronpg_jiebapg_repackpg_similaritypgtappgvectorpldebuggerprefixvarbitxzhparserganos

同時PolarDB進行了深入的效能最佳化,例如通過指令集最佳化(SIMD/原子操作)、系統級最佳化(PGO/BOLT/LTO)和IO效能最佳化等手段實現深入效能最佳化。

說明

相關文檔:PostgreSQL 17社區發布公告

發布時間

北京時間2025年4月3日

費用說明

支援訂用帳戶和隨用隨付兩種計費模式,可疊加計算包、儲存包使用,提供靈活的計費選擇。計費詳情請參見產品計費

關鍵提升

系統級效能提升

  • Vacuum進程記憶體消耗最佳化:Vacuum進程對於PostgreSQL資料庫的健康運行至關重要,其執行需要消耗叢集資源。PostgreSQL 17引入新的Vacuum內部記憶體結構用於Vacuum操作,最高可以減少20倍記憶體消耗。不僅提高Vacuum的執行速度,還減少了對共用資源的使用,從而為工作負載騰出更多資源。

  • I/O層的效能最佳化PostgreSQL 17改進WALTlog,高並發工作負載的寫入輸送量提升最多高達2倍。此外,新的流式I/O介面加快了順序掃描(讀取表中所有資料)和ANALYZE更新查詢規劃器統計資訊的速度。

  • 查詢最佳化PostgreSQL 17改進了使用B-tree索引(PostgreSQL中的預設索引方法)的IN子句查詢的效能。此外,該版本支援並行構建BRIN索引。PostgreSQL 17引入多個查詢規劃方面的改進,包括對NOT NULL約束的最佳化以及對公用表運算式(WITH查詢)的改進。該版本增加了更多的SIMD(單指令/多資料)支援以加速計算,包括使用AVX-512加速bit_count函數。

開發人員體驗

  • PostgreSQL是第一個添加JSON支援的關係型資料庫(2012年),在PostgreSQL 17進一步完善SQL/JSON標準的實現。

    • 引入JSON_TABLE,允許開發人員將JSON資料轉換為標準的PostgreSQL表。

    • 支援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 17版本擴充了管理分區資料和分布在遠程PolarDB PostgreSQL版叢集上的資料的功能。該版本支援在分區表上使用身份列和排除約束。此外,PostgreSQL外部資料封裝器(postgres_fdw)支援將EXISTSIN子查詢下推到遠程伺服器以進行更高效的查詢處理。

  • PostgreSQL 17支援一個內建的、跨平台的、保證不可變的定序提供者。該程式提供類似於C定序的排序語義,但使用的是UTF-8編碼而非SQL_ASCII。通過使用這個新的定序提供者,可以確保無論PostgreSQL運行在哪,基於文本的查詢都能返回相同的排序結果。

邏輯複製增強

邏輯複製用於在許多情境下即時資料流式傳輸資料。在PostgreSQL 17版本之前,執行主要版本升級的使用者必須刪除邏輯複製槽,這需要在升級後重新同步訂閱者的資料。從該版本開始,使用者無需刪除邏輯複製槽,從而簡化使用邏輯複製時的升級過程。

PostgreSQL 17包含了對邏輯複製的故障切換控制,使其在高可用環境中更加可靠。此外,該版本引入pg_createsubscriber命令列工具,用於在使用物理複製的副本從庫上建立邏輯複製。

安全性和操作管理選項

  • PostgreSQL 17進一步擴充了使用者管理其資料庫系統整個生命週期的方式。PolarDB PostgreSQL版引入了一個新的TLS選項sslnegotiation,允許使用者在使用ALPN時直接進行TLS握手(在ALPN目錄中註冊為postgresql)。

  • PostgreSQL 17新增pg_maintain預定義角色,該角色授予使用者執行維護操作的許可權。

  • PostgreSQL 17的原生PostgreSQL備份工具pg_basebackup支援增量備份,並添加pg_combinebackup工具重建完整備份。此外,pg_dump增加新選項--filter,允許在產生轉儲檔案時選擇要包含的對象。

  • PostgreSQL 17還增強了監控和分析功能。

    • EXPLAIN現在支援顯示本地I/O塊讀取和寫入花費的時間,並包括兩個新選項:SERIALIZEMEMORY,用於查看網路傳輸的資料轉換所花費的時間以及使用了多少記憶體。

    • 支援查看索引清理的進度,並添加pg_wait_events系統檢視表,結合pg_stat_activity視圖可以更深入瞭解活動會話等待原因。

升級指導

建議您升級到PolarDB PostgreSQL版 17版本。升級到PolarDB PostgreSQL版相容PostgreSQL 17版本意味著您可以與PostgreSQL社區保持同步,獲得更多的資源和支援,協助您解決問題並學習資料庫的最佳實務。

PolarDB PostgreSQL版 16版本升級到PolarDB PostgreSQL版 17版本的過程中,大部分的資料類型、內建函數、表列和對象無明顯變化,大多數為細節改進。通過邏輯複製等方式(推薦使用DTS工具進行PolarDB PostgreSQL版間的遷移)可以實現接近100%的相容性,具體的變化細節如下所示。

說明

此處僅為PolarDB PostgreSQL版 17版本與PolarDB PostgreSQL版 16版本區別。其他PolarDB PostgreSQL版版本升級到PolarDB PostgreSQL版 16中的區別,請參見PostgreSQL 16與PostgreSQL 15區別PostgreSQL 15與PostgreSQL 14區別

類型

  • 限制ago只出現在INTERVAL值的末尾。

  • 禁止空INTERVAL單位多次出現。

視圖

  • 更新pgrowlocks鎖模式輸出標籤。將Share改為For ShareKey Share改為For Key Share

  • 更新兩個WAL檔案名稱函數的檔案邊界處理。pg_walfile_name()pg_walfile_name_offset()函數在PostgreSQL 17之前版本對位於檔案邊界的LSN返回前一個段號,PostgreSQL 17版本返回當前段號。

  • 刪除information_schemaelement_types.domain_default欄位。

  • 重新命名pg_stat_statements的I/O塊讀寫時間統計列。blk_read_time改為shared_blk_read_timeblk_write_time改為shared_blk_write_time

  • 更新統計目標列的預設值表示方式。pg_attribute.attstattargetpg_statistic_ext.stxstattarget用NULL表示預設統計目標。

  • 重新命名本地化相關列名。pg_collation.colliculocale改為colllocalepg_database.daticulocale改為datlocale

  • 重構VACUUM進度統計列。max_dead_tuples改為max_dead_tuple_bytesnum_dead_tuples改為num_dead_item_ids,新增dead_tuple_bytes欄位。

  • 重新命名SLRU相關統計視圖列。pg_stat_slru視圖列及pg_stat_reset_slru()參數名同步變更。

函數與運算式

在維護操作中使用安全Search_path的函數變更,防止維護操作(如ANALYZE、CLUSTER、CREATE INDEX、CREATE MATERIALIZED VIEW、REFRESH MATERIALIZED VIEW、REINDEX或VACUUM)執行不安全訪問。對於引用非預設Schema的運算式索引和物化視圖所使用的函數,必須在建立函數時明確指定Search_path。

許可權

  • 更新SET SESSION AUTHORIZATION對初始會話使用者超級許可權的處理。新行為基於執行SET SESSION AUTHORIZATION命令時會話使用者的超級許可權狀態,而非串連時的狀態。

  • 移除類比按資料庫使用者的功能(db_user_namespace特性,極少被使用)。

其他

  • 移除伺服器參數old_snapshot_threshold。該參數允許Vacuum移除可能仍對運行中事務可見的行,若後續訪問會導致snapshot too old錯誤。

  • 移除adminpack擴充。該擴充已被終止支援的pgAdmin III使用。

  • 移除伺服器參數trace_recovery_messages