PostgreSQL 12 正式發布 性能與功能全面提升

PostgreSQL 12 已經發布,該版本在各方面都得到了加強,包括顯著地提升查詢性能,特別是對大數據集,總的空間利用率方面。這個版本為應用程序開發人員提供了更多的功能,比如對 SQL/JSON 路徑表達式的支持,優化公共表達式(WITH查詢)的執行,以及對生成列的支持等。

PostgreSQL 12 正式發布 性能與功能全面提升

PostgreSQL 除了持續對 PostgreSQL 系統的可擴展性、穩健性進行開發外,還更多地在本地化、授權控制以及更加容易的管理進行增強。這個版本也引入了 可插撥的表存取接口,來允許開發者在表的創建和使用時使用不同的存取方式。具體如下:

全面的性能提升

PostgreSQL 12版本在性能和易維護性方面有了顯著的增強,尤其是對索引和分區子系統。

PostgreSQL 12 對標準索引類型B樹索引進行了優化,以使其可以可以更好地處理索引更新頻率較高類型的負載的的總體性能,使用最常使用的TPC-C 性能測試,PostgreSQL 12 平均可以提升約 40% 的空間利用率和查詢性能。

對分區表的查詢也得到了較大改進,特別是對那些有數千個分區的表,而結果只需從幾個有限的分區提取數據的查詢。PostgreSQL 12 對通過 INSERT 和COPY指令將數據加入分區表的操作,也有加強,包括現在可以在不阻塞查詢的情況下增加新的分區。

另外,PostgreSQL 12 對索引的優化也提升了總體的性能,包括生成 GiST、GIN 或 SP-GiST 索引的 WAL 日誌的負載顯著減少,在 GiST 類型索引上創 建INCLUDE選項的包含索引,SP-GiST 索引現在支持距離操作的 K-NN(即相鄰最近)查詢,以及CREATE STATISTICS指令現在支持最常用值 MCV 的統計來幫助那些字段值非均勻分布的查詢生成更優化的查詢計劃。

通過使用 LLVM,從 PostgreSQL 11 版引入的 JIT 即時編譯,在 PostgreSQL 12 中缺省已是啟用狀態,JIT 即時編譯對帶有 WHERE 條件、對象列表、 聚合以及一些內部操作都會提供性能上的幫助。當然,用戶在安裝或是編譯時需要包含 LLVM 模塊。

對 SQL 標準一致性和功能的增強

PostgreSQL 一直以來以其對 SQL 標準符合性而著稱,這也是其名稱由 POSTGRES 改為 PostgreSQL 的一個小原因。PostgreSQL 12 又增加了幾個新特性 來持續實現對 SQL 標準的符合性的強化。

PostgreSQL 12 加入了對 JSON 文檔進行查詢時使用 JSON 路徑表達式的功能,這也是 SQL/JSON 中定義的規范。對使用 JSONB 格式保存的文檔,這些查 詢可以利用已有的索引機制來高效地提取數據。

公共表達式,也稱之為 WITH 查詢,在 PostgreSQL 12 中可以實現非物化操作處理,這對很多現在已有的查詢有很大幫助。目前在這個版本中,WITH 查詢的前提條件是非遞歸查詢並且僅可被外層查詢引用一次。

PostgreSQL 12 也引入了「生成列」功能,這也是 SQL 標準中的要求,這些字段值是通過同一表中其它列計算而來的。在這一版本中,PostgreSQL 支持「保存生成列值」的功能,即將這些計算出來的數據存儲在磁盤上。

本地化

PostgreSQL 12 擴充了對 ICU 排序規則的支持,允許用戶自行定義非標準的排序方式,比如允許大小寫不敏感或是按口音不敏感的比較規則。

授權控制

PostgreSQL 通過再次擴展了一些的安全方面的功能來強化了它本來就很穩健的權限控制。這個版本中通過 GSSAPI 接口支持客戶端和服務端的雙向加密, 如果在編譯時加入 OpenLDAP 模塊,PostgreSQL 也支持搜索 LDAP 服務器的功能。

另外,PostgreSQL 12 現在支持多約束的授權方式。如在使用scram-sha-256的授權方式,PostgreSQL 服務器現在可以強制一個客戶端在提供用戶名、使用clientcert=verify-full選項,再必須提供有效的 SSL 證書的方式來強化安全授權。

系統管理

PostgreSQL 12 的REINDEX CONCURRENTLY指令可以在不影響新的索引寫入的前提下讓用戶執行重那建索引操作,這有助於用戶實現不停機對 較大索引的重建。

還有,PostgreSQL 12 通過使用pg_checksums指令對停機的 PostgreSQL 來開啟或關閉頁校驗功能,該功能有助於檢查已寫入磁盤的數據一致性, 而以前版本中該操作僅允許在 initdb的階段來執行。

發布公告:

https://www.postgresql.org/about/news/1976/

來源:cnBeta