PostgreSQL 11 Press Kit

新聞稿

2018 年 10 月 18 日 — PostgreSQL 全球開發團隊今天宣布釋出 PostgreSQL 11,這是世界上最先進開源資料庫的最新版本。

PostgreSQL 11 為使用者提供了對資料庫系統整體效能的精進,具有與超大型資料庫和複雜運算工作負載相關的專屬功能強化。此外,PostgreSQL 11 對分割資料表系統進行了重大革新,也增加了 Stored procedure 能夠進行交易事務管理的支援,並且改進了平行查詢與平行處理資料定義功能,還引入了 JIT(Just-In-Time)編譯以加速在查詢中表示式的執行。

「對於PostgreSQL 11,我們的開發社群專注於發展能夠提升 PostgreSQL 管理超大型資料庫的能力,」PostgreSQL 全球開發團隊核心團隊成員 Bruce Momjian 表示。 「除了 PostgreSQL 經過驗證的交易事務類的工作效能之外,PostgreSQL 11 也能使開發人員能夠更輕鬆地大規模運用大數據應用程式。」

PostgreSQL 受益於 20 多年的開源發展,已成為開發人員首選的開源關連式資料庫系統。此專案持續獲得整個市場的認可,並被 DB-Engines 評為「2017 年度資料庫管理系統」,並列於 SD Times 2018 100 之中。

PostgreSQL 11 是自 2017 年 10 月 5 日 PostgreSQL 10 發佈以來的第一個主要更新版本。包含錯誤修復的 PostgreSQL 11 的下一個更新版本將是 PostgreSQL 11.1,而再下一個帶有創新功能的主要版本將會是 PostgreSQL 12。

提升分割區資料表的穩定性和效能

PostgreSQL 11 增加了透過 hash 鍵(也稱為 hash 分割區)對資料進行分割的能力,原來 PostgreSQL 中是以值的列表或範圍對資料進行分割。PostgreSQL 11 進一步提升了其資料聚合的能力,對使用 PostgreSQL 外部資料封裝器 postgres_fdw 的分割區進行了功能上的改進。

為了協助管理分割區,PostgreSQL 11 為與分割區鍵值無法匹配的資料引入了一個「catch-all」的預設分割區,並且能夠讓所有分割區的資料表上建立主鍵、外部鍵、索引和觸發器。如果更新該資料列的分割區鍵值,PostgreSQL 11 還支援自動將資料列遷移到正確的分割區。

PostgreSQL 11 透過使用新的分割區消除策略,使得分割區讀取時查詢效能提高了。此外,PostgreSQL 11 現在支援分割資料表上流行的「upsert」功能,這有助於使用者在與資料互動時簡化程式碼並減少網路頻寬的浪費。

Stored procedure 支援交易事務

開發人員能夠在 PostgreSQL 中建立使用者定義的函數已經超過20年,但在 PostgreSQL 11 之前,這些函數無法管理自己的交易事務。PostgreSQL 11 增加了可以在函數內執行完整交易事務管理的 SQL procedure,使得開發人員能夠設計更先進的伺服器端應用程序,例如涉及增量的批次資料載入應用程序。

可以使用 CREATE PROCEDURE 命令建立 SQL procedure,使用 CALL 命令執行,而伺服器端程序語言 PL/pgSQL、PL/Perl、PL/Python 和 PL/Tcl 都支援 SQL procedure。

查詢的平行運算強化

PostgreSQL 11 提升了平行查詢效能,平行循序掃描和 Hash Join 的效能改善以及對分割區資料的掃描效率進化。如果底層查詢無法平行化,PostgreSQL 現在可以以UNION 的 SELECT 查詢來平行處理。

PostgreSQL 11 為多個資料定義命令增加了平行執行的可能性,特別是用於標準 CREATE INDEX 命令所産生的 B-tree 索引。從查詢建立資料表或具體化檢視表的幾個資料定義命令現在也是可以平行處理的,包括了 CREATE TABLE .. AS、SELECT INTO 和 CREATE MATERIALIZED VIEW。

表示式的即時(Just-In-Time)編譯

PostgreSQL 11 引入了對即時(Just-In-Time)編譯的支援,以加速查詢執行期間某些表示式的執行。PostgreSQL 的 JIT 表示式編譯使用 LLVM 專案來加速 WHERE 子句、目標列表、彙總函數、映射和一些內部作業中表示式的執行。

要使用 JIT 編譯,您需要安裝 LLVM 相依套件,以透過設定 jit = on 或執行 SET jit = on 設定 PostgreSQL 連線,又或在 PostgreSQL 組態檔案中啟用 JIT 編譯。

一般性使用體驗改進

如果沒有活躍的使用者社群回饋和 PostgreSQL 工作人員的付出,PostgreSQL 資料庫的進化是不可能的。下面重點介紹 PostgreSQL 11 中包含的一些功能,旨在改善整體的使用體驗:

  • ALTER TABLE .. ADD COLUMN .. DEFAULT ..使用非 NULL 預設值在執行時不再需要重新寫入整個資料表,這在執行此命令時提供了顯著的效能提升。
  • 「Covering indexes」,允許使用者使用 INCLUDE 子句向索引加入其他欄位,有助於執行索引限定掃描,尤其是不能由 B-tree 索引處理的資料型別。
  • 增加窗函數的附加功能,包括允許 RANGE 使用 PRECEDING/FOLLOWING、GROUPS 和 frame exclusion。
  • 在 PostgreSQL 命令列界面中加入關鍵字「quit」和「exit」,以更容易地離開命令列工具

有關此版本中所包含的功能完整列表,請閱讀發行說明,請查閱以下網址:

https://www.postgresql.org/docs/11/static/release-11.html

關於 PostgreSQL

PostgreSQL 是世界上最先進的開源資料庫,是個擁有無數的使用者、貢獻者、公司和組織的全球社群組織。PostgreSQL 專案建立在 30 多年的軟體工程之上,從加州大學伯克萊分校開始,持續以無與倫比的速度發展。PostgreSQL 的成熟功能不僅與頂級的商用資料庫系統相近,而且在進階的資料庫功能、可擴展性、安全性和穩定性方面超越了它們。要了解有關於 PostgreSQL 的更多訊息,請參與 PostgreSQL.org 上的社群活動。

更多功能

有關上述功能及其他功能的說明,請參閱以下資源:

在哪裡下載

有幾種方法可以下載 PostgreSQL 11,包括:

PostgreSQL Extension Network 上則提供了其他工具和延伸套件。

文件

PostgreSQL 11 附帶了 HTML 文件和 man pages,您也可以線上瀏覽 HTMLPDF 格式的文件