PostgreSQL 13 Beta 1 發布帶來大量新特性
PostgreSQL 13 的第一個Beta 版本發布了,此版本更新亮點包括:PostgreSQL 13 中有許多新功能可以幫助提高PostgreSQL 的整體性能,同時使開發應用程序變得更加容易。B 樹索引(PostgreSQL 的標準索引)在處理重複數據方面得到了改進。這些增強功能有助於縮小索引大小並提高查找速度,特別是對於包含重複值的索引。
功能性
PostgreSQL 13 增加了增量排序,當從查詢的早期部分排序的數據已經被排序時,它可以加速數據的排序。此外,帶有OR 子句或IN/ANY 常量列表的查詢可以使用擴展的統計信息(通過CREATE STATISTICS 創建)。
在此發行版中,PostgreSQL 的分區功能增加了更多改進,包括增加了在分區表之間直接進行聯接的情況,這可以縮短總體查詢執行時間。分區表現在支持在行級觸發器(row-level triggers)之前,並且分區表現在可以通過邏輯複製完全複製,而不必發佈單個分區。
PostgreSQL 13 為使用諸如FETCH FIRST WITH TIES 之類的功能編寫查詢提供了更多便利,該功能返回與最後一行匹配的任何其他行。還為jsonpath 查詢添加了.datetime() 函數,該函數將自動將類似日期或類似時間的字符串轉換為適當的PostgreSQL 日期/時間數據類型。
現在,生成隨機UUID 甚至更加容易,因為可以使用gen_random_uuid() 函數而無需啟用任何擴展。
Administration
PostgreSQL 13 最令人期待的特性之一是VACUUM 命令能夠並行處理索引。可以使用VACUUM 命令上的新PARALLEL 選項(或vacuumdb 上的–parallel)來訪問其功能,該選項允許用戶指定用於清理索引的並行工作程序的數量。要注意的是,這不適用於FULL 選項。
reindexdb 命令還通過新的–jobs 標誌添加了並行性,它可以指定在為數據庫重新索引時要使用的並發會話數。
PostgreSQL 13 引入了“可信擴展”(trusted extension)的概念,該概念允許超級用戶指定(只要具有CREATE 特權就可以在其數據庫中安裝的)擴展。
該版本包括更多監控PostgreSQL 數據庫中活動的方法:PostgreSQL 13 現在可以跟踪WAL 使用情況統計信息、流式基礎備份的進度,以及ANALYZE 命令的進度。pg_basebackup 還可以生成一個清單,該清單可用於使用新工具pg_verifybackup 來驗證備份的完整性。現在也可以限制複製槽保留的WAL 空間量。
pg_dump 的新標誌–include-foreign-data 在轉儲輸出中包括來自外部數據包裝程序引用的服務器數據。
pg_rewind 命令在PostgreSQL 13 中也有所改進。除了pg_rewind 自動執行崩潰恢復外,現在可以使用–write-recovery-conf 標誌使用它來配置備用PostgreSQL 實例。pg_rewind 也可以使用目標實例的restore_command 來獲取所需的預寫日誌。
安全性
PostgreSQL 在此最新版本中繼續改進安全功能,引入了一些功能來幫助進一步安全地部署PostgreSQL。
libpq 是為psql 和許多PostgreSQL 連接驅動程序提供動力的連接庫,新版本帶來了幾個有助於保護連接的新參數。PostgreSQL 13 引入了channel_binding 連接參數,該參數允許客戶端指定他們希望將通道綁定功能作為SCRAM 的一部分。此外,使用密碼保護的TLS 證書的客戶端現在可以使用sslpassword 參數指定其密碼。PostgreSQL 13 還增加了對DER 編碼證書的支持。
PostgreSQL 外部數據包裝器(postgres_fdw)還獲得了一些如何保護連接安全的增強功能,包括使用基於證書的身份驗證連接到其他PostgreSQL 集群的能力。此外,無特權的帳戶現在可以通過postgres_fdw 連接到另一個PostgreSQL 數據庫,而無需使用密碼。
其他亮點
PostgreSQL 13繼續改善Windows的可操作性,現在在Windows上運行PostgreSQL的用戶可以選擇通過UNIX域套接字進行連接。
PostgreSQL 13 文檔增加了術語表,以幫助人們熟悉PostgreSQL 和常規數據庫概念。同時,表中的函數和運算符的顯示也進行了大量修改,這有助於提高Web 和PDF 文檔的可讀性。
用於性能測試的pgbench 實用程序現在支持對“帳戶”表進行分區的功能,從而可以更輕鬆地對包含分區的工作負載進行基準測試。
在輸出數據方面,psql 包含了warn命令,該命令類似於echo 命令,只是warn 將其發送到stderr。