PostgreSQL Global Development Group 今天宣布發布 PostgreSQL 12,這是世界上最先進的開放原始碼資料庫的最新版本。
PostgreSQL 12 的增強功能包括對查詢效能的顯著改進,尤其是在較大的資料集上,以及整體的空間利用率。此版本為應用程式開發人員提供新的功能,例如 SQL/JSON 路徑表達式支援、針對通用資料表表達式 (WITH
) 查詢執行方式的優化,以及產生的欄位。 PostgreSQL 社群繼續支援 PostgreSQL 的可擴展性和穩健性,進一步增加了國際化、驗證,並提供更輕鬆的管理 PostgreSQL 的方法。此版本還引入了可插拔的資料表儲存介面,允許開發人員建立自己的資料儲存方法。
PostgreSQL Global Development Group 的核心團隊成員 Dave Page 說:「PostgreSQL 背後的開發社群為 PostgreSQL 12 貢獻了許多功能,這些功能提供了效能和空間管理方面的優勢,我們的使用者可以通過最少的努力來實現,以及企業驗證、管理功能和 SQL/JSON 支援方面的改進。」 「此版本延續了使管理大型和小型資料庫工作負載變得更容易的趨勢,同時建立在 PostgreSQL 在生產環境中具有靈活性、可靠性和穩定性的聲譽之上。」
PostgreSQL 受益於超過 20 年的開放原始碼開發,已成為各種規模組織的首選開放原始碼關聯式資料庫。 該專案持續受到整個行業的認可,包括連續第二年被 DB-Engines 評為 2018 年的「年度 DBMS」,並在 OSCON 2019 上獲得 「終身成就」開放原始碼獎。
PostgreSQL 12 為其索引系統和分割區提供顯著的效能和維護增強功能。
B 樹索引是 PostgreSQL 中的標準索引類型,在 PostgreSQL 12 中已得到最佳化,可以更好地處理索引經常修改的工作負載。 使用 TPC-C 基準測試的公平使用實作,PostgreSQL 12 平均減少了 40% 的空間利用率,並整體提高了查詢效能。
分割區資料表上的查詢也看到了顯著的改進,特別是對於具有數千個分割區的資料表,只需要從有限的子集中檢索資料。 PostgreSQL 12 還提高了使用 INSERT
和 COPY
將資料新增到分割區資料表的效能,並且包含在不封鎖查詢的情況下將新分割區附加到資料表的功能。
PostgreSQL 12 中還有其他影響整體效能的索引增強功能,包括 GiST、GIN 和 SP-GiST 索引類型的預寫日誌產生中的較低額外負擔、建立覆蓋索引(INCLUDE
子句)在 GiST 索引上的能力、使用 SP-GiST 索引使用距離運算子 (<->
) 執行 K 最近鄰查詢的能力,以及 CREATE STATISTICS
現在支援最常見值 (MCV) 統計資料,以在使用非均勻分布的欄位時幫助產生更好的查詢計畫。
使用 LLVM 的 即時 (JIT) 編譯,已在 PostgreSQL 11 中引入,現在預設為啟用。 JIT 編譯可以為 WHERE
子句、目標列表、彙總和一些內部操作中的表達式執行提供效能優勢,並且如果您的 PostgreSQL 安裝是使用 LLVM 編譯或打包的,則可以使用。
PostgreSQL 以其符合 SQL 標準而聞名 - 這也是它從「POSTGRES」更名為「PostgreSQL」的原因之一 - PostgreSQL 12 增加了幾項功能,以繼續實作 SQL 標準並增強功能。
PostgreSQL 12 引入了使用 SQL/JSON 標準中定義的 JSON 路徑表達式對 JSON 文件執行查詢的能力。 此類查詢可以利用現有的索引機制來有效率地檢索儲存在 JSONB
格式中的文件。
通用資料表表達式,也稱為 WITH
查詢,現在可以由 PostgreSQL 12 自動內聯,這反過來可以幫助提高許多現有查詢的效能。 在此版本中,如果 WITH
查詢不是遞迴的,沒有任何副作用,並且在查詢的後續部分中僅引用一次,則可以內聯。
PostgreSQL 12 引入了「產生的欄位」。 在 SQL 標準中定義,此類型的欄位從同一資料表中的其他欄位的內容計算其值。 在此版本中,PostgreSQL 支援「儲存的產生的欄位」,其中計算的值儲存在磁碟上。
PostgreSQL 12 透過允許使用者定義「非決定性排序規則」來擴展其對 ICU 排序規則的支援,例如,允許區分大小寫或區分重音符號的比較。
PostgreSQL 透過幾項增強功能擴展了其強大的驗證方法支援,這些增強功能提供了額外的安全性和功能。 此版本為透過 GSSAPI 介面的驗證引入了用戶端和伺服器端加密,以及如果 PostgreSQL 是使用 OpenLDAP 編譯的,則 PostgreSQL 可以發現 LDAP 伺服器的能力。
此外,PostgreSQL 12 現在支援一種多因素驗證形式。 現在,PostgreSQL 伺服器可以要求驗證的用戶端使用 clientcert=verify-full
選項提供具有其使用者名稱的有效 SSL 憑證,並將其與單獨的驗證方法的要求(例如 scram-sha-256
)相結合。
PostgreSQL 12 引入了在不阻礙對索引寫入的情況下重建索引的能力,透過 REINDEX CONCURRENTLY
指令達成,讓使用者能夠避免長時間索引重建造成的停機情況。
此外,PostgreSQL 12 現在可以使用 pg_checksums
指令,在離線叢集中啟用或停用頁面校驗和 (page checksums)。 過去,頁面校驗和 (一種有助於驗證儲存在磁碟上的資料完整性的功能) 只能在使用 initdb
初始化 PostgreSQL 叢集時啟用。
如需此版本包含的完整功能列表,請閱讀 版本說明,網址為:https://postgresql.dev.org.tw/docs/12/release-12.html
PostgreSQL 是世界上最先進的開放原始碼資料庫,擁有由數千名使用者、貢獻者、公司和組織組成的全球社群。 PostgreSQL 專案建立在加州大學柏克萊分校 (University of California, Berkeley) 開始的 30 多年工程經驗之上,並以無與倫比的速度持續發展。 PostgreSQL 成熟的功能集不僅與頂級專有資料庫系統相符,而且在進階資料庫功能、可擴展性、安全性和穩定性方面超越了它們。