PostgreSQL 13 Beta 1 已發布!

發布於 2020-05-21,作者:PostgreSQL Global Development Group
PostgreSQL 專案

PostgreSQL Global Development Group 宣布 PostgreSQL 13 的第一個 beta 版本現在開放下載。此版本包含 PostgreSQL 13 最終版本中將提供的所有功能的預覽,但該版本的某些細節在此之前可能會有所更改。

您可以在發布說明中找到有關 PostgreSQL 13 中所有功能和變更的資訊

https://postgres.tw/docs/13/release-13.html

本著開源 PostgreSQL 社群的精神,我們強烈建議您在系統中測試 PostgreSQL 13 的新功能,以幫助我們消除可能存在的任何錯誤或其他問題。雖然我們不建議您在生產環境中執行 PostgreSQL 13 Beta 1,但我們鼓勵您尋找方法針對此 beta 版本執行典型的應用程式工作負載。

您的測試和回饋將幫助社群確保 PostgreSQL 13 版本堅持我們提供世界上最先進的開源關聯式資料庫的穩定、可靠版本的標準。您可以在這裡閱讀更多關於我們的beta 測試流程以及如何貢獻

https://postgres.tw/developer/beta/

PostgreSQL 13 功能重點

功能

PostgreSQL 13 中有許多新功能,有助於提高 PostgreSQL 的整體效能,同時使其更容易開發應用程式。

B-tree 索引是 PostgreSQL 的標準索引,針對它們如何處理重複資料進行了改進。這些增強功能有助於縮小索引大小並提高查找速度,尤其是在包含重複值的索引中。

PostgreSQL 13 新增了增量排序,當查詢中先前部分的排序資料已經排序時,可以加速資料排序。此外,具有 OR 子句或 IN/ANY 常數列表的查詢可以使用擴展統計資訊(透過 CREATE STATISTICS 建立),這可以帶來更好的計畫和效能提升。PostgreSQL 13 現在可以使用磁碟儲存體進行雜湊聚合(在聚合查詢中用作一部分),以處理大型聚合集。

在此版本中,PostgreSQL 的分割區功能增加了更多改進,包括可以直接在分割區表之間發生連接的情況數量增加,這可以縮短整體查詢執行時間。分割區表現在支援 BEFORE 行級觸發器,並且現在可以透過邏輯複寫完全複寫分割區表,而無需發布個別分割區。

PostgreSQL 13 為編寫查詢帶來了更多便利性,例如 FETCH FIRST WITH TIES,它會傳回任何與最後一行匹配的額外列。此外,還新增了 .datetime() 函數用於 jsonpath 查詢,它會自動將類似日期或時間的字串轉換為適當的 PostgreSQL 日期/時間資料類型。現在也可以更輕鬆地產生隨機 UUID,因為可以使用 gen_random_uuid() 函數,而無需啟用任何擴充功能。

管理

PostgreSQL 13 最受期待的功能之一是 VACUUM 命令能夠並行處理索引。可以使用 VACUUM 命令上的新 PARALLEL 選項(或 vacuumdb 上的 --parallel)來存取此功能,您可以使用該選項指定用於清理索引的並行工作執行緒數量。請注意,這不適用於 FULL 選項。

reindexdb 命令也新增了並行性,透過新的 --jobs 標誌,您可以指定重新建立資料庫索引時要使用的並行會話數。

PostgreSQL 13 引入了「受信任的擴充功能」的概念,它允許超級使用者指定使用者可以在其資料庫中安裝的擴充功能,只要他們具有 CREATE 權限即可。

此版本包含更多監控 PostgreSQL 資料庫內活動的方式:PostgreSQL 13 現在可以追蹤 WAL 使用統計資訊和串流基礎備份的進度,以及 ANALYZE 命令的進度。pg_basebackup 也可以產生一個資訊清單,可以使用一個名為 pg_verifybackup 的新工具來驗證備份的完整性。現在也可以限制複寫槽保留的 WAL 空間量。

pg_dump 的一個新標誌 --include-foreign-data,將 foreign data wrappers 引用的伺服器中的資料包含在轉儲輸出中。

pg_rewind 命令在 PostgreSQL 13 中也進行了改進。除了 pg_rewind 自動執行崩潰恢復之外,現在您可以使用它來配置備用 PostgreSQL 實例,透過使用 --write-recovery-conf 標誌。pg_rewind 也可以使用目標實例的 restore_command 來提取所需的預寫日誌。

安全性

PostgreSQL 在這個最新版本中繼續改進其安全性功能,引入了多項功能以幫助更安全地部署 PostgreSQL。

libpqpsql 和許多 PostgreSQL 連接驅動程式的連接庫,包含多個新參數,有助於保護連接。PostgreSQL 13 引入了 channel_binding 連接參數,它允許客戶端指定他們希望要求將通道綁定功能作為 SCRAM 的一部分。此外,使用密碼保護的 TLS 憑證的客戶端現在可以使用 sslpassword 參數指定其密碼。PostgreSQL 13 還增加了對 DER 編碼憑證的支援。

PostgreSQL foreign data wrapper (postgres_fdw) 也收到了對其如何保護連接的多項增強功能,包括使用基於憑證的身份驗證連接到其他 PostgreSQL 集群的能力。此外,非特權帳戶現在可以透過 postgres_fdw 連接到另一個 PostgreSQL 資料庫,而無需使用密碼。

其他重點

PostgreSQL 13 繼續改進在 Windows 上的可操作性,因為現在在 Windows 上執行 PostgreSQL 的使用者可以選擇透過 UNIX 域套接字進行連接。

PostgreSQL 13 文件增加了一個詞彙表,以幫助人們熟悉 PostgreSQL 和一般資料庫概念。這與函數和運算符在表格中顯示方式的重大修改同時進行,這有助於提高在 Web 上和 PDF 文件中的可讀性。

用於效能測試的 pgbench 實用程式現在支援分割其「accounts」表的能力,從而更易於對包含分割區的工作負載進行基準測試。

psql 現在包含 \warn 命令,該命令在輸出資料方面與 \echo 命令類似,除了 \warn 將其發送到 stderr。如果您需要有關任何 PostgreSQL 命令的更多指導,--help 標誌現在包含一個指向 https://postgres.tw 的連結。

其他功能

PostgreSQL 13 中增加了許多其他新功能和改進,其中一些對您的用例可能與上面提到的功能同樣重要或更重要。請參閱發布說明,以取得新功能和變更功能的完整列表

https://postgres.tw/docs/13/release-13.html

錯誤與相容性測試

PostgreSQL 各個版本的穩定性很大程度上仰賴您,社群成員,使用您的工作負載和測試工具來測試即將發布的版本,以便在 PostgreSQL 13 正式版發布之前找到錯誤和回歸問題。由於這是一個 Beta 版本,資料庫行為、功能細節和 API 仍有可能進行微小的變更。您的回饋和測試將有助於確定新功能的最終調整,因此請盡快進行測試。使用者測試的品質有助於決定我們何時可以發布最終版本。

PostgreSQL Wiki 上公開提供了一份未解決問題列表。您可以透過 PostgreSQL 網站上的此表單回報錯誤

https://postgres.tw/account/submitbug/

Beta 版發布時程

這是 13 版本的第一個 Beta 版。PostgreSQL 項目將根據測試需要發布額外的 Beta 版本,然後發布一個或多個候選版本,直到 2020 年底發布最終版本。 欲了解更多資訊,請參閱Beta 測試頁面。

連結