PostgreSQL 12 beta 1發布新特性預覽
PostgreSQL 12 beta 1 發布了,此版本包含了PostgreSQL 12 最終版本中可用的所有功能的預覽,但某些細節可能會在12 正式發布之前發生變化。新特性包括:
索引性能、功能和管理PostgreSQL 12 改進了標準B 樹索引的整體性能,同時改進了這些索引的空間管理。除了性能提升之外,這些改進還減少了需要經常修改的B 樹索引的大小。
此外,PostgreSQL 12 還增加了並發重建索引的功能,這使得可以在不阻止對索引進行任何寫入的情況下執行REINDEX 操作。此功能應該有助於在生產環境中管理PostgreSQL 數據庫時可能導致停機的冗長索引重建。
PostgreSQL 12 擴展了幾種專用索引機制的功能。創建覆蓋索引的能力,即PostgreSQL 11 中引入的INCLUDE 子句,現已添加到GiST 索引中。SP-GiST 索引現在支持對支持距離(<->)操作的數據類型執行K 近鄰(K-NN)查詢的能力。
創建GiST、GIN 或SP-GiST 索引時生成的預寫日誌(WAL)開銷量在PostgreSQL 12 中也顯著降低,這提高了PostgreSQL 集群的磁盤利用率,同時為連續存檔與流複製等功能提供了多種好處。
內聯WITH 查詢(公用表表達式)
公共表表達式(也稱為WITH 查詢)現在滿足以下幾個條件則可以在查詢中自動內聯:
- 不是遞歸的
- 沒有任何副作用
- 僅在查詢的後續部分引用一次
這將刪除PostgreSQL 8.4 中引入WITH 子句以來一直存在的“優化範圍”選項。
如果需要,可以使用MATERIALIZED 子句強制WITH 查詢實現:
WITH c AS MATERIALIZED ( SELECT * FROM a WHERE ax % 4 = 0 ) SELECT * FROM c JOIN d ON dy = ax;
分區
PostgreSQL 12 在處理具有數千個分區的表時,性能提高了,並且只需要使用少量分區操作。PostgreSQL 12 還改進了INSERT 和COPY 在分區表中的性能。現在可以在不阻塞分區表上的並發查詢的情況下執行ATTACH PARTITION。此外,PostgreSQL 12 現在允許使用外鍵來引用分區表。
SQL/JSON 的JSON 路徑查詢規範
PostgreSQL 12 現在允許根據SQL:2016 標準中的SQL/JSON 規範執行JSON 路徑查詢。與XML 的XPath 表達式類似,除了比較JSON 文檔中的值之外,JSON 路徑表達式還允許評估各種算術表達式和函數。
可以使用GIN 索引加速這些表達式的子集,從而允許跨多組JSON 數據執行高性能查找。
排序規則
PostgreSQL 12 現在支持對ICU 提供的排序規則進行不區分大小寫和重音不敏感的比較,也稱為“非確定性排序規則”。使用時,這些排序規則可以為比較和排序提供便利,但也可能導致性能損失,因為排序規則可能需要對字符串進行額外檢查。
可插拔表存儲接口
PostgreSQL 12 引入了可插入表存儲接口,允許創建和使用不同的表存儲方法。可以使用CREATE ACCESS METHOD 命令將新的訪問方法添加到PostgreSQL 集群,然後將其添加到CREATE TABLE 上具有新USING 子句的表中。
可以通過創建新的表訪問方法來定義表存儲接口。在PostgreSQL 12 中,默認使用的存儲接口是堆訪問方法,它目前是唯一的內置方法。
頁面校驗和
pg_verify_checkums 命令已重命名為pg_checksums,現在支持在脫機的PostgreSQL 集群中啟用和禁用頁面校驗和的功能。
認證和連接安全
GSSAPI現在支持客戶端和服務器端加密,可以使用hostgssenc和hostnogssenc記錄類型在pg_hba.conf文件中指定。如果使用OpenLDAP編譯PostgreSQL,PostgreSQL 12還允許基於DNS SRV記錄發現LDAP服務器。
詳情查看更新說明: