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