天天看點

PostgreSQL 11 釋出:JIT、存儲過程事務,并行性能提升

PostgreSQL 11 釋出了,PostgreSQL 11 帶來了整體性能的改進,具有與超大型資料庫和高計算工作負載相關的特定增強功能。此外,PostgreSQL 11 對表分區系統進行了重大改進,存儲過程中支援事務,改進了查詢并行性能并增加了并行化資料定義功能,同時在查詢中引入了 JIT 編譯以加速表達式的執行。

主要更新内容如下:

提高分區的健壯性和性能

PostgreSQL 11 增加了通過 hash key 對資料進行分區的能力,增強了目前通過值清單或範圍對 PostgreSQL 中的資料進行分區的能力。進一步提高了其資料聯合能力,并對使用 PostgreSQL 外部資料包裝器 postgres_fdw 的分區進行了功能改進。

為了幫助管理分區,PostgreSQL 11 為與分區鍵不比對的資料引入了一個預設分區,并且能夠在傳遞給所有分區的分區表上建立主鍵、外鍵、索引和觸發器。如果更新行的分區鍵,PostgreSQL 11 還支援自動将該行移動到正确的分區。

PostgreSQL 11 通過使用新的分區消除政策提高了從分區讀取時的查詢性能。此外,PostgreSQL 11 現在支援分區表上流行的“upsert”功能,這有助于簡化使用者與資料互動時程式的代碼并減少網絡開銷。

存儲過程中支援事務

在 PostgreSQL 11 之前,使用者定義的函數無法管理自己的事務,PostgreSQL 11 添加了可以在函數體内執行完整事務管理的 SQL 過程,使開發人員能夠建立更進階的伺服器端應用程式,例如涉及增量批量資料加載的應用程式。

查詢并行性能提升

PostgreSQL 11 提高了并行查詢性能,同時并行順序掃描和散列連接配接的性能得到提升,對分區資料的掃描也更高效。如果底層查詢無法并行化,PostgreSQL 現在可以執行并行使用 UNION 的 SELECT 查詢。

表達式 JIT 編譯

PostgreSQL 11 引入了對 JIT 編譯的支援,以加速查詢執行期間某些表達式的執行。PostgreSQL 的 JIT 表達式編譯使用 LLVM 項目來加速 WHERE 子句、目标清單、聚合、映射和一些内部操作中表達式的執行。

本文來自雲栖社群合作夥伴“開源中國”

本文作者:h4cd 

原文連結