PostgreSQL 全球開發團隊於今日宣布發布 PostgreSQL 11,這是世界上最先進的開源資料庫的最新版本。
PostgreSQL 11 為使用者提供了資料庫系統整體效能的改進,特別是與超大型資料庫和高計算工作負載相關的增強功能。此外,PostgreSQL 11 對資料表分割系統進行了重大改進,增加了對能夠進行事務管理的預存程序的支援,改進了查詢平行處理能力並增加了平行化的資料定義功能,並引入了即時 (JIT) 編譯,以加速查詢中表達式的執行。
PostgreSQL 全球開發團隊的核心團隊成員 Bruce Momjian 表示:「對於 PostgreSQL 11,我們的開發社群專注於添加功能,以提高 PostgreSQL 管理超大型資料庫的能力。除了 PostgreSQL 在事務工作負載方面經過驗證的效能之外,PostgreSQL 11 使開發人員更容易大規模地運行大數據應用程式。」
PostgreSQL 受益於 20 多年的開源開發,已成為開發人員首選的開源關聯式資料庫。該專案持續獲得業界的認可,並被 DB-Engines 評為「2017 年度 DBMS」,並入選 SD Times 2018 100。
PostgreSQL 11 是自 2017 年 10 月 5 日發布 PostgreSQL 10 以來的首個主要版本。包含錯誤修復的下一個 PostgreSQL 11 更新版本將是 PostgreSQL 11.1,而具有新功能的下一個主要版本將是 PostgreSQL 12。
PostgreSQL 11 增加了按雜湊鍵分割資料的能力,也稱為雜湊分割,從而增加了目前在 PostgreSQL 中按值清單或範圍分割資料的能力。PostgreSQL 11 進一步改進了其資料聯合能力,並針對使用 PostgreSQL 外部資料包裝器 postgres_fdw 的分割區進行了功能改進。
為了幫助管理分割區,PostgreSQL 11 引入了一個適用於與分割區鍵不符的資料的全捕獲預設分割區,以及在傳遞給所有分割區的分割資料表上建立主鍵、外來鍵、索引和觸發器的能力。如果更新了該列的分割區鍵,PostgreSQL 11 還支援自動將列移動到正確的分割區。
PostgreSQL 11 透過使用新的分割區消除策略,提高了從分割區讀取資料時的查詢效能。此外,PostgreSQL 11 現在支援分割資料表上流行的「upsert」功能,這有助於使用者簡化應用程式程式碼並減少與資料互動時的網路開銷。
開發人員已經可以在 PostgreSQL 中建立使用者定義函數超過 20 年,但在 PostgreSQL 11 之前,這些函數無法管理自己的事務。PostgreSQL 11 增加了 SQL 程序,這些程序可以在函數體內執行完整的事務管理,使開發人員能夠建立更進階的伺服器端應用程式,例如涉及增量批次資料載入的應用程式。
可以使用 CREATE PROCEDURE
命令建立 SQL 程序,可以使用 CALL
命令執行 SQL 程序,並且伺服器端程序語言 PL/pgSQL、PL/Perl、PL/Python 和 PL/Tcl 支援 SQL 程序。
PostgreSQL 11 提高了平行查詢效能,在平行循序掃描和雜湊聯結方面都有效能提升,同時提高了分割資料的掃描效率。如果基礎查詢無法平行化,PostgreSQL 現在可以平行執行使用 UNION
的 SELECT 查詢。
PostgreSQL 11 將平行處理能力新增到多個資料定義命令,特別是用於建立透過執行標準 CREATE INDEX
命令生成的 B-tree 索引。現在,從查詢中建立資料表或實體化檢視表的幾個資料定義命令也具有平行處理能力,包括 CREATE TABLE .. AS
、SELECT INTO
和 CREATE MATERIALIZED VIEW
。
PostgreSQL 11 引入了對即時 (JIT) 編譯的支援,以加速查詢執行期間特定表達式的執行。用於 PostgreSQL 的 JIT 表達式編譯使用 LLVM 專案來加速 WHERE 子句、目標清單、彙總、投影和某些內部操作中表達式的執行。
若要利用 JIT 編譯,您需要安裝 LLVM 依賴項並在 PostgreSQL 設定檔中啟用 JIT 編譯,方法是將 jit = on
,或者從 PostgreSQL 會話中執行 SET jit = on
。
如果沒有活躍的使用者社群的回饋以及從事 PostgreSQL 工作的人們的辛勤工作,就不可能對 PostgreSQL 關聯式資料庫進行增強。以下重點介紹了 PostgreSQL 11 中包含的許多旨在改善整體使用者體驗的功能中的一小部分
ALTER TABLE .. ADD COLUMN .. DEFAULT ..
和非 NULL
預設值即可在執行時重寫整個資料表,從而在運行此命令時提供顯著的效能提升。INCLUDE
子句將額外的列新增到索引,這對於執行僅索引掃描很有幫助,尤其是在 B-tree 索引無法索引的資料類型上。RANGE
使用 PRECEDING
/FOLLOWING
、GROUPS
和框架排除如需此版本中包含的完整功能清單,請閱讀 版本說明,可在以下網址找到:
https://postgres.tw/docs/11/static/release-11.html
PostgreSQL 是世界上最先進的開源資料庫,擁有由數千名使用者、貢獻者、公司和組織組成的全球社群。PostgreSQL 專案建立在加州大學柏克萊分校開始的 30 多年工程經驗的基礎上,並以無與倫比的發展速度持續發展。PostgreSQL 成熟的功能集不僅可以與頂級專有資料庫系統相媲美,而且在進階資料庫功能、可擴展性、安全性和穩定性方面超越了它們。如需進一步瞭解 PostgreSQL 並參與我們的社群,請造訪 PostgreSQL.org。