PostgreSQL 13 新特性
作者: 不剪發(fā)的Tony老師
畢業(yè)于北京航空航天大學,十多年數(shù)據(jù)庫管理與開發(fā)經(jīng)驗,目前在一家全球性的金融公司從事數(shù)據(jù)庫架構(gòu)設(shè)計。CSDN學院簽約講師以及GitChat專欄作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net
大家好!我是只談技術(shù)不剪發(fā)的 Tony 老師。今天給大家?guī)硪粋€關(guān)于 PostgreSQL 的最新消息。
PostgreSQL 全球開發(fā)組于 2020-05-21 宣布了 PostgreSQL 13 的第一個 beta 版本,目前已經(jīng)提供了下載。雖然細節(jié)可能會有所改變,但是該版本包含了 PostgreSQL 13 最終正式版中的所有新特性的預(yù)覽,讓我們趕緊一睹為快吧!
功能性
PostgreSQL 13 增加了許多改進性能的新特性,同時使得應(yīng)用程序的開發(fā)更加容易。
改進了 B 樹索引中重復數(shù)據(jù)的處理,減少了索引的大小并且提高了查找速度,尤其是當索引中包含重復值的時候。
增加了增量排序功能,可以加速基于已經(jīng)排序的中間結(jié)果集的排序操作。
包含 OR 子句或者 IN/ANY 常量列表的查詢可以利用擴展統(tǒng)計(通過 CREATE STATISTICS 語句創(chuàng)建)可以獲得更好的執(zhí)行計劃和性能。
可以使用磁盤實現(xiàn)大型數(shù)據(jù)集的哈希聚合(作為聚合查詢的一部分)。
分區(qū)功能的持續(xù)改進,包括更多場景下的分區(qū)表直接連接查詢,從而提高總體的查詢性能。
分區(qū)表支持 BEFORE 行級觸發(fā)器,并且支持分區(qū)表的整體邏輯復制,不需要單獨發(fā)布和訂閱每個分區(qū)。
實現(xiàn)了更多的 SQL 查詢功能,例如 FETCH FIRST WITH TIES,可以返回更多滿足條件的數(shù)據(jù)。
為 jsonpath 查詢增加了 .datetime() 函數(shù),自動將日期或者時間字符串轉(zhuǎn)換為合適的 PostgreSQL 日期/時間數(shù)據(jù)類型。
更加方便的隨機 UUID,內(nèi)置函數(shù) gen_random_uuid() 不再需要安裝額外的擴展插件。
管理性
VACUUM 命令支持索引的并行處理,這也是 PostgreSQL 13 最令人期待的特性之一。通過 VACUUM 命令的新選項 PARALLEL 或者 vacuumdb --parallel 可以指定清理索引時的并發(fā)工作進程。注意,該選項不兼容 FULL 選項。
reindexdb 命令增加了 --jobs 選項,用于指定重新索引時的并發(fā)線程數(shù)量。
引入了“可信插件”的概念,允許 superuser 指定某個插件可以被用戶安裝到自己的數(shù)據(jù)庫中,只要他們擁有 CREATE 權(quán)限即可;
支持更多的數(shù)據(jù)庫監(jiān)控方式:允許追蹤 WAL 使用統(tǒng)計、流復制基礎(chǔ)備份的進度以及 ANALYZE 命令的執(zhí)行進度。pg_basebackup 可以生成一個描述清單,用于驗證備份的完整性(通過一個新的工具 pg_verifybackup)。允許限制為復制槽(replication slots)保留的 WAL 空間。
pg_dump 支持新的選項,--include-foreign-data,用于導出 FDW 外部服務(wù)器中的數(shù)據(jù)。
pg_rewind 命令的增強。除了自動故障恢復之外,pg_rewind 也可以通過 --write-recovery-conf 選項配置 PostgreSQL 備用實例。另外,pg_rewind 還可以使用目標實例的 restore_command 獲取所需的預(yù)寫日志。
安全性
PostgreSQL 繼續(xù)改進了安全相關(guān)的功能,引入了 PostgreSQL 安全部署相關(guān)的特性:
psql 和許多 PostgreSQL 連接驅(qū)動所使用的 libpq 連接庫引入了幾個新的安全參數(shù)。增加了 channel_binding 連接參數(shù),允許客戶端使用 SCRAM 的通道綁定功能。另外,客戶端還可以使用 sslpassword 參數(shù)指定密碼,通過密碼保護的 TLS 進行認證。PostgreSQL 13 還增加了 DER 加密認證。
PostgreSQL 外部數(shù)據(jù)封裝器(postgres_fdw)增強了安全連接功能,包括使用基于認證的授權(quán)連接到其他 PostgreSQL 服務(wù)器。另外, 非特權(quán)用戶可以通過 postgres_fdw 不提供密碼連接到其他 PostgreSQL 數(shù)據(jù)庫。
其他增強
PostgreSQL 13 改進了 Windows 系統(tǒng)上的操作系,運行 PostgreSQL 的 Window 用戶可以使用 UNIX 域套接字進行連接。
PostgreSQL 13 文檔增加了術(shù)語匯編(glossary),可以幫助用戶熟悉 PostgreSQL 和通用的數(shù)據(jù)庫概念。與此同時,表格中的函數(shù)和運算符展示也進行了重大的重新編排,改進了網(wǎng)頁和 PDF 文檔的可讀性。
用于性能測試的 pgbench 工具可以支持 accounts 表的分區(qū),使得包含分區(qū)表的性能測試更加簡單。
psql 支持 \warn 命令,功能類似于輸出數(shù)據(jù)的 \echo 命令,區(qū)別在于 \warn 的結(jié)果打印到 stderr。另外,--help 選項包含了一個指向 https://www.postgresql.org 的鏈接。
更多特性
除了以上內(nèi)容,PostgreSQL 13 還增加了大量的新功能和改進,完整的新特性列表可以參考官方的發(fā)行說明。
我們會在后續(xù)文章中針對這些新特性具體進行介紹和分析