PostgreSQL開發小組正式釋出最新的16版本開源資料庫,這個版本在查詢、批次處理和邏輯複製的效能都有明顯改進,同時用戶也能夠定義存取控制規則,讓管理龐大機隊策略更靈活。

用戶會明顯感受到資料庫效能提升。PostgreSQL 16查詢規畫器獲得最佳化,能夠平行處理FULL和RIGHT JOIN子句。當查詢中使用帶有DISTINCT或ORDER BY子句的聚合函式時,PostgreSQL將能夠生成更為最佳化的計畫。此外,對SELECT DISTINCT的查詢,這個版本會採用漸增排序,且窗函式的效能也得到提升。同時RIGHT和OUTER在處理反向連接時也有所改善,使用戶更容易查詢到連接表中不存在的資料列。

在這個版本中,官方指出,無論是單一或是並行運算中,當用COPY語句進行批次載入時,其效能已經最佳化,可獲得提升達到300%。而PostgreSQL 16也對使用libpq的客戶端,添加負載平衡支援,且對VACUUM操作進行改良,減少完整表格凍結操作。

PostgreSQL為了回收不再使用的空間以及維護多版本一致性控制(MVCC),會使用VACUUM操作,該操作可以協助系統回收空間,同時避免因為交易ID溢出而產生的問題。當交易ID即將溢出時,PostgreSQL會進行一次完整表格凍結,將表格中所有資料列標記為永久不會過期,但是完整表格凍結是一項既耗時又資源密集的操作,可能影響資料庫的效能,因此PostgreSQL 16減少完整表格凍結,是一項重要的最佳化。

此外,PostgreSQL 16在x86和ARM架構上使用SIMD的CPU加速功能,所以在處理ASCII和JSON字串、陣列和子交易搜尋時效能大幅提升。

PostgreSQL 16另一項重要更新是針對邏輯複製功能,這種複製方式讓用戶將資料,串流到其他支援PostgreSQL邏輯複製協定的PostgreSQL實例或是訂閱者。在最新版本中,用戶能從待命的實例執行邏輯複製,而這代表備用實例可以向其他伺服器發布邏輯變更。這提供開發者更高的靈活性,能夠運用備用實例分攤工作負載,不侷限於繁忙的主要實例。

邏輯複製還有多項效能最佳化。現在訂閱者可以使用並行工作程序(Worker)處理大型交易,對於沒有主鍵的表格,訂閱者可以選擇使用B-tree索引查詢資料列,取代傳統的序列掃描。而且在特定情況下,使用者也能夠利用二進位格式迅速完成初始表格同步。

開發者現在可以使用更為精細的存取控制和安全性設定,強化對pg_hba.conf和pg_ident.conf配置檔案的管理,例如,可以使用正規表示式來比對用戶和資料庫的名稱,或是引入外部配置檔案的指令。

在PostgreSQL 16中,安全客戶端連接擁有更多參數設定,像是require_auth可供客戶端指定想要使用的身分驗證方式,而sslrootcert="system"設定則讓客戶端使用其系統中的受信證書。此版本也支援Kerberos憑證代理,讓部分擴充套件使用這些憑證連接其他受信任的服務。

熱門新聞

Advertisement