PostgreSQL 12 發布

PostgreSQL 團隊宣布發布開源關係型資料庫管理系統的最新版本 PostgreSQL 12。
PostgreSQL 12 顯著提高了查詢效能 - 特別是在處理大量資料時,並且總體上還優化了磁碟空間的使用。

新功能包括:

  • JSON Path 查詢語言的實作(SQL/JSON 標準最重要的部分);
  • 優化公共表表達式的執行(WITH);
  • 支援生成的列

社群也持續致力於 PostgreSQL 的可擴展性和可靠性,開發對國際化、身分驗證功能的支持,並提供更簡單的系統管理方法。

此版本包括可插拔儲存引擎介面的實現,現在允許開發人員創建自己的資料儲存方法。

性能改進

PostgreSQL 12 對索引和分區系統的效能和維護進行了重大改進。

B 樹索引是 PostgreSQL 中的標準索引類型,在版本 12 中針對涉及頻繁索引修改的工作負載進行了最佳化。 使用 PostgreSQL 12 的 TPC-C 基準測試表明,空間使用量平均減少了 40%,查詢效能整體提高。

針對分區表的查詢得到了顯著的改進,特別是對於包含數千個分區且僅需要處理資料數組的有限部分的表。 使用 INSERT 和 COPY 將資料新增至分區表的效能得到了改進,並且能夠在不阻塞查詢的情況下附加新分區。

PostgreSQL 12 對影響整體效能的索引進行了額外的改進,包括:

  • 減少為 GiST、GIN 和 SP-GiST 索引類型產生 WAL 時的開銷;
  • 在 GiST 索引上建立所謂的覆蓋索引(INCLUDE 子句)的能力;
  • 使用距離運算子 (<->) 和 SP-GiST 索引執行「最近鄰居」查詢(k-NN 搜尋)的能力;
  • 支援使用 CREATE STATISTICS 收集最常見值 (MCV) 統計信息,這有助於在使用值分佈不均勻的列時獲得更好的查詢計劃。

PostgreSQL 11 中引入的使用 LLVM 的 JIT 編譯現在預設為啟用。 JIT 編譯可提高使用 WHERE 子句、目標清單、聚合和某些內部操作中的表達式時的效能。 如果您使用 LLVM 編譯了 PostgreSQL 或使用啟用了 LLVM 的 PostgreSQL 包,則該選項可用。

SQL 語言功能和標準相容性的改進

PostgreSQL 12 引進了使用 SQL/JSON 標準中定義的 JSON 路徑表達式查詢 JSON 文件的功能。 此類查詢可以利用以 JSONB 格式儲存的文件的現有索引機制來有效檢索資料。

公用表表達式(也稱為WITH查詢)現在可以使用PostgreSQL 12中的替換自動執行,這反過來又可以幫助提高許多現有查詢的效能。 在新版本中,WITH 查詢的替換部分只有在非遞歸、沒有副作用並且在查詢的後續部分中僅引用一次時才能執行。

PostgreSQL 12 引入了對「生成列」的支援。 在 SQL 標準中描述,此列類型根據同一表中其他列的內容計算值。 在此版本中,PostgreSQL 支援“儲存生成列”,其中計算值儲存在磁碟上。

國際化

PostgreSQL 12 允許使用者定義“非確定性排序規則”,從而擴展了對 ICU 排序規則的支持,例如,允許不區分大小寫或不區分重音的比較。

認證

PostgreSQL 透過提供額外安全性和功能的多項增強功能擴展了對強式驗證方法的支援。 此版本引入了用於透過 GSSAPI 介面進行身份驗證的用戶端和伺服器端加密,以及使用 OpenLDAP 編譯 PostgreSQL 時 PostgreSQL 發現 LDAP 伺服器的能力。

此外,PostgreSQL 12 現在支援多重身份驗證選項。 PostgreSQL 伺服器現在可以使用 clientcert=verify-full 要求用戶端提供有效的 SSL 憑證以及對應的使用者名,並將其與單獨的身份驗證方法要求(例如 scram-sha-256)結合。

管理

PostgreSQL 12 引進了使用 REINDEX CONCURRENTLY 指令執行非阻塞索引重建的功能。 這使得用戶可以避免在冗長的索引重建過程中 DBMS 停機。

此外,在 PostgreSQL 12 中,您可以使用 pg_checksums 指令在關閉叢集中啟用或停用頁面校驗和。 以前,頁校驗和這項功能有助於驗證儲存在磁碟上的資料的完整性,只能在使用 initdb 初始化 PostgreSQL 叢集時啟用。

來源: linux.org.ru

添加評論