PolarDB PostgreSQL版相容PostgreSQL 15版本正式發布上線。
概述
PolarDB PostgreSQL版相容PostgreSQL 15版本注重效能提升。在管理本地和分布式部署中的工作負載方面成效顯著。
目前的版本主要增強最佳化了以下方面:
改進排序功能:改進記憶體和磁碟排序演算法。
增強SQL功能:支援SQL標準的MERGE命令。增加使用Regex的新函數,用於檢查字串。
改進邏輯複製功能:支援複製2PC事務,發布內容可以使用WHERE進行過濾,支援一次性發布Schema下所有的表。
最佳化資料庫效能:降低記憶體佔用。崩潰恢複加速等。
版本介紹
在社區PostgreSQL 15的基礎上,PolarDB還支援一些專屬的功能,例如GanosBase時空引擎,全域執行計畫緩衝,GBK/GB18030字元集等。在PolarDB PostgreSQL版 15的第一個發布版本中支援以下外掛程式:hll、hypopg、log_fdw、pase、pg_bigm、pg_cron、pg_jieba、pg_repack、pg_similarity、pgtap、pgvector、pldebugger、prefix、roaringbitmap、rum、varbitx、zhparser、ganos。
同時PolarDB進行了深入的效能最佳化,例如最佳化SIMD指令集和原子操作指令集的使用,並在交易處理等模組中使能。使用 PGO、BOLT、LTO、程式碼片段大頁等系統級最佳化手段。支援批量讀取、擴充,最佳化IO效能,並進行了深入的參數調優,提供了極致效能。
關於社區的詳細發布資訊,請參考社區公告:https://www.postgresql.org/docs/15/release-15.html
發布時間
2024年7月19日
計費模式
全面支援訂用帳戶和隨用隨付兩種計費模式,並且支援計算包、儲存包等疊加使用,提供靈活的計費選擇。計費詳情請參考產品計費。
關鍵提升
PolarDB PostgreSQL版相容PostgreSQL 15版本相較之前版本的主要最佳化為:
排序及壓縮效能提升
改進PostgreSQL的記憶體和磁碟排序演算法。在基準測試中顯示,對於不同資料類型的排序,速度可提高20%到400%不等。
提升以下函數作為視窗函數使用時的效能:
row_number()、rank()、dense_rank()和count()。支援
SELECT DISTINCT並行查詢。基於PostgreSQL 14版本的非同步遠程查詢功能,支援外部資料封裝器postgres_fdw非同步提交。
支援對WAL記錄檔的LZ4和Zstandard (zstd)壓縮,在一定的工作負載下獲得空間和效能最佳化。
對部分作業系統,支援對WAL頁面的預先載入,加快恢復。
PostgreSQL內建備份命令
pg_basebackup支援伺服器端的備份檔案壓縮,可以選擇gzip、LZ4和zstd格式。支援自訂模組歸檔能力,減少使用Shell命令的成本。
開發人員特色功能
支援SQL標準的
MERGE命令。允許編寫包含INSERT、UPDATE和DELETE操作的SQL語句。增加了使用Regex的新函數用於檢查字串,相關函數如下:
regexp_count()、regexp_instr()、regexp_like()和regexp_substr()。增加
range_agg函數,用於彙總Multirange資料類型。CREATE VIEW增加security_invoker選項,允許使用訪客許可權建立視圖,而不是視圖建立者許可權。增加額外的保護,確保視圖調用者使用正確的許可權處理底層資料。
更多邏輯複製選項
增加邏輯複製靈活性,為Publication引入行篩選和資料列列表,允許您選擇從表中複製資料的子集。
增加部分功能簡化衝突管理。
增加跳過重新執行衝突事務的能力。
增加在檢測到錯誤時自動停止訂閱的能力。
支援在邏輯複製中使用兩階段交易認可(2PC)。
日誌和配置增強
引入JSONLOG日誌格式。使用JSON結構輸出日誌資料,可以在結構化日誌系統中處理PostgreSQL日誌。
在管理PostgreSQL配置方面,為資料庫管理員增加了授予使用者更改伺服器級配置參數的許可權的能力。
增加
\dconfig命令,可以在psql命令工具查看配置資訊。
其他值得關注的改動
伺服器級的統計資料收集至共用記憶體,最佳化了統計收集進程以及定期將這些資料寫入磁碟的過程。
ICU排序作為叢集或單個資料庫的預設定序成為可能。
增加內建擴充pg_walinspect,允許您直接從SQL介面檢查WAL記錄檔內容。
允許除資料庫擁有者之外,從
public(或default)模式的資料庫中撤銷所有帳號的CREATE許可權。刪除長期被棄用的“獨佔備份”模式,也刪除了PL/Python中對Python 2的支援。
升級指導
建議您升級到PolarDB PostgreSQL版 15版本。升級到PolarDB PostgreSQL版相容PostgreSQL 15版本意味著您可以與PostgreSQL社區保持同步,獲得更多的資源和支援,協助您解決問題並學習資料庫的最佳實務。
在PolarDB PostgreSQL版 14版本升級到PolarDB PostgreSQL版 15版本的過程中,大部分的資料類型、內建函數、表列和對象無明顯變化,大多數為細節改進。通過邏輯複製等方式(推薦使用DTS工具,詳細介紹請參考PolarDB PostgreSQL版間的遷移)可以實現接近100%的相容性,具體的變化細節如下所示。
類型
禁止零長度
Unicode標識符,例如U&""。防止數字文本有非數字結尾的字元,例如
123abc會被解析為123。調整JSON數字文本處理方式,以匹配SQL/JSON標準。現在接受
1.和.1輸入,同時不接受非數字結尾,例如1.type()。當
Interval輸入的單位分數值大於月份時,四捨五入到最接近的月份,例如1.99 year轉換到2 years,而非過去的1 year 11 months。提高
Interval與尾隨句點解析的一致性。char:更改非ASCII字元的輸入輸出格式,以八進位展示。
函數與運算式
array_to_tsvector():如果傳入一個Null 字元串數組元素,將會產生錯誤。chr():當提供負參數時,將會產生錯誤。因為輸出類型為
Interval的函數依賴於IntervalStyle,將對應函數標記為stable,而非immutable。增加調整時間間隔函數中的整數溢出檢查,受影響的函數是
justify_interval(),justify_hours()和justify_days()。改進計算演算法
random():即使種子值相同,也會導致random()的結果與之前版本的結果不同。
查詢最佳化
將
Hash_mem_multiplier預設值增加到2.0,允許查詢雜湊操作比其他動作使用更多的work_mem記憶體。防止
CREATE OR REPLACE VIEW改變輸出資料行的定序。
許可權
刪除登入角色的對自身成員資格擁有的預設
ADMIN OPTION許可權。登入角色在沒有ADMIN OPTION許可權的情況下不可以添加/刪除其自身角色的成員。允許邏輯複製作為訂閱的所有者運行 。
阻止對訂閱所有者沒有
SELECT許可權的表進行邏輯複製操作 (UPDATE DELETE)。
其他
刪除排他備份及相關函數。
刪除對Python2的支援。
刪除
xml_is_well_formed函數。libpq的
PQsendQuery()函數不再支援管道模式,可能會導致部分應用程式或者驅動不相容。刪除過時參數
stats_temp_directory。當
EXPLAIN引用會話臨時對象的Schema時,將其稱為pg_temp,過去Schema名稱也會被包含在內。