PostgreSQL 全球開發團隊宣布 PostgreSQL 14 的第一個 Beta 版本現在可供下載。此版本包含 PostgreSQL 14 最終版本的所有功能預覽,但發布的某些細節在此之前可能會有所更改。
您可以在發行說明中找到有關 PostgreSQL 14 中所有功能和變更的資訊
https://postgres.tw/docs/14/release-14.html
本著 PostgreSQL 開源社群的精神,我們強烈建議您在系統中測試 PostgreSQL 14 的新功能,以幫助我們消除可能存在的錯誤或其他問題。雖然我們不建議您在生產環境中運行 PostgreSQL 14 Beta 1,但我們鼓勵您找到方法針對此 Beta 版本運行您的典型應用程式工作負載。
您的測試和反饋將幫助社群確保 PostgreSQL 14 版本符合我們對交付世界上最先進的開源關係型資料庫的穩定、可靠版本的標準。請閱讀更多關於我們的 Beta 測試流程以及您如何貢獻
https://postgres.tw/developer/beta/
PostgreSQL 14 延續了近年來發布的趨勢,為各種規模的工作負載提供效能優勢。
對於大量連線到資料庫的 PostgreSQL 系統,無論它們處於活動還是閒置狀態,此版本在事務吞吐量方面都有顯著改進。
PostgreSQL 14 還包含減少 B 樹索引開銷的額外收益,包括減少具有頻繁更新索引的資料表上的膨脹。GiST 索引現在可以在其建立過程中預先對資料進行排序,從而實現更快的索引建立和更小的索引。SP-GiST 索引現在支援覆蓋索引,允許使用者透過 INCLUDE
子句將其他不可搜尋的欄位新增到索引中。
PostgreSQL 14 中對查詢並行性進行了許多改進。除了並行循序掃描的整體效能改進之外,PL/pgSQL 中的 RETURN QUERY
指令現在可以使用並行性執行查詢。REFRESH MATERIALIZED VIEW
現在也可以使用查詢並行性。
PostgreSQL 14 還引入了在使用外部資料封裝器查詢遠端資料庫時利用查詢並行性的能力。 PostgreSQL 外部資料封裝器 postgres_fdw
在 PostgreSQL 14 中新增了對此的支援,當設定了 async_capable
標誌時。 postgres_fdw
還支援批量插入,並且可以使用 IMPORT FOREIGN SCHEMA
匯入資料表分割區,並且現在可以在外部資料表上執行 TRUNCATE
。
此版本還對分割區系統進行了多項改進,包括在更新或刪除僅影響少數分割區的資料表上的列時提高效能。在 PostgreSQL 14 中,現在可以使用 ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
命令以非阻塞方式分離分割區。
在上一個版本中引入的增量排序現在可以被 PostgreSQL 14 中的視窗函式使用。這個新版本為擴充統計資訊增加了更多功能,現在可以將其應用於表達式。
幾十年來,PostgreSQL 一直支援對其「超大資料」欄位(即 TOAST 系統)進行壓縮,但此版本增加了現在選擇使用 LZ4 壓縮進行欄位壓縮的功能。
在現有對範圍類型的支援的基礎上,PostgreSQL 14 新增了新的多範圍類型,可讓您指定非連續範圍的有序列表,例如
SELECT datemultirange( daterange('2021-07-01', '2021-07-31'), daterange('2021-09-01', '2021-09-30'), daterange('2021-11-01', '2021-11-30'), daterange('2022-01-01', '2022-01-31'), daterange('2022-03-01', '2022-04-07') );
新的多範圍類型支援範圍類型可用的現有操作。
PostgreSQL 14 現在為檢索巢狀物件中的資訊新增了一個通用的下標框架。例如,您現在可以使用下標語法檢索 JSONB
資料類型中的巢狀資訊,例如
SELECT ('{ "this": { "now": { "works": "in postgres 14!" }}}'::jsonb)['this']['now']['works'];
PostgreSQL 14 還新增了對預存程序中 OUT
參數的支援,並允許 GROUP BY
子句使用 DISTINCT
關鍵字來移除重複的 GROUPING SET
組合。
對於遞迴通用資料表表達式(WITH
查詢),PostgreSQL 14 新增了 SEARCH
和 CYCLE
的語法便利性,分別有助於排序和循環偵測。
PostgreSQL 14 中還有新的 date_bin
函式,可以用於將時間戳記與指定的間隔對齊,這是一種稱為「分箱」的技術。
PostgreSQL 14 對 VACUUM
進行了多項改進,並針對索引進行了最佳化。 Autovacuum 現在分析分割區資料表,並且可以將有關列數的資訊傳播到父資料表。 ANALYZE
中也提高了效能,可以使用 maintenance_io_concurrency
參數進行控制。
PostgreSQL 14 包括對可以監控的資訊進行了多項改進,包括使用 pg_stat_progress_copy
檢視追蹤 COPY
的進度。 此版本可讓您從 pg_stat_wal
檢視追蹤 WAL 活動,並從 pg_stat_replication_slots
檢視檢查複製槽統計資訊。
PostgreSQL 14 中新增了一些參數,以協助管理連線。這些參數包括 idle_session_timeout
,它可以在指定的期間後關閉閒置連線;以及 client_connection_check_interval
參數,它讓 PostgreSQL 可以在客戶端斷線時取消長時間執行的查詢。
REINDEX
指令現在可以處理分割資料表的所有子索引,並且 PostgreSQL 14 新增了 pg_amcheck
工具,以協助檢查資料毀損。
PostgreSQL 14 為邏輯複製新增了許多效能優勢,包括將進行中的交易流式傳輸到訂閱者,而不是等待它們完成的能力。透過新的 ADD/DROP PUBLICATION
語法,ALTER SUBSCRIPTION
讓新增/移除發布變得更加容易。
PostgreSQL 14 在崩潰恢復時啟動 PostgreSQL 的方式上進行了效能改進,並且您現在可以在處於待機模式的 PostgreSQL 實例上使用 pg_rewind
。
PostgreSQL 14 新增了讓使用者透過使用 pg_read_all_data
和 pg_write_all_data
預定義角色,分別給予使用者對資料表/檢視表/序列的通用「唯讀」和「唯寫」權限的能力。
此版本還預設在新的 PostgreSQL 實例上使用 SCRAM-SHA-256 進行密碼管理。此外,pg_hba.conf
中的 clientcert
參數現在必須使用 verify-ca
或 verify-full
的值,而不是舊版的值。
PostgreSQL 14 可以使用憑證的「識別名稱」(DN)透過 pg_hba.conf
檔案中使用 clientname=DN
參數進行基於憑證的身份驗證。
PostgreSQL 14 新增了許多其他的新功能和改進,其中一些可能對您的使用案例來說,與上述提及的內容一樣重要甚至更重要。請參閱發布說明以取得新增和變更功能的完整列表。
https://postgres.tw/docs/14/release-14.html
每個 PostgreSQL 版本的穩定性在很大程度上取決於您,社群,使用您的工作負載和測試工具來測試即將到來的版本,以便在 PostgreSQL 14 正式發布之前發現錯誤和回歸。由於這是一個 Beta 版本,因此資料庫行為、功能細節和 API 仍有可能發生細微變更。您的回饋和測試將有助於確定新功能的最終調整,因此請在不久的將來進行測試。使用者測試的品質有助於確定我們何時可以進行最終版本發布。
未解決問題的列表可在 PostgreSQL Wiki 中公開取得。您可以使用 PostgreSQL 網站上的這個表單回報錯誤
https://postgres.tw/account/submitbug/
這是 14 版本的首個 Beta 版本。PostgreSQL 專案將根據測試需要發布額外的 Beta 版本,然後發布一個或多個候選版本,直到 2021 年底的最終版本。有關更多資訊,請參閱 Beta 測試頁面。