PostgreSQL 11 Beta 1 已發布!

發布於 2018-05-24,作者為 PostgreSQL 全球開發團隊
PostgreSQL 專案

PostgreSQL 全球開發團隊宣布 PostgreSQL 11 的第一個 Beta 版本現已可供下載。此版本包含 PostgreSQL 11 最終版本中的所有功能預覽,但發布的某些細節可能會在此之前發生變化。

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

PostgreSQL 11 的主要功能

PostgreSQL 11 的主要功能著重於效能、處理更大的資料集和易用性。

分區的重大改進

PostgreSQL 11 包含多個功能,可改進在分區中使用資料,包括

  • 按雜湊鍵分區的能力(“雜湊分區”)
  • 發布到分區鍵的 UPDATE 語句現在會將受影響的列移動到適當的分區
  • 由於查詢處理和執行期間增強的分區消除以及並行分區掃描,因此改善了 SELECT 查詢效能
  • 支援分區上的 PRIMARY KEYFOREIGN KEY、索引和觸發器

以及更多。

PostgreSQL 11 還引入了一項功能,允許查詢在最終聚合之前將分組和聚合分配到分區表。預設情況下禁用此功能,若要啟用,您需要在設定檔中或在會話或事務期間設定 enable_partitionwise_aggregate = on

並行性的改進

已新增到 PostgreSQL 11 的多個功能利用了並行查詢基礎架構並提供了顯著的效能增強,包括

  • 並行雜湊聯結
  • B-tree 索引的並行 CREATE INDEX
  • 並行 CREATE TABLE .. ASCREATE MATERIALIZED VIEW 和某些具有 UNION 的查詢

SQL 預存程序

PostgreSQL 11 引入了 SQL 預存程序,允許使用者在程序中使用嵌入式事務(即 BEGINCOMMIT/ROLLBACK)。可以使用 CREATE PROCEDURE 命令建立程序,並使用 CALL 命令執行程序。

引入即時 (JIT) 編譯

PostgreSQL 11 引入了對 即時 (JIT) 編譯 的支援,以優化程式碼的執行和其他在執行階段的操作。透過使用 LLVM 專案的元件,在 PostgreSQL 中引入 JIT 支援可加速利用表達式(例如 WHERE 子句)、目標清單、聚合、投影以及一些內部操作的查詢。

PostgreSQL 中的 JIT 框架旨在允許將來新增用於優化的工作。如果您要從原始碼建置 PostgreSQL 11,則可以使用 --with-llvm 旗標啟用 JIT 編譯。

視窗函式完全支援 SQL:2011 標準

從 PostgreSQL 11 開始,視窗函式現在支援 SQL:2011 標準中顯示的所有選項,包括 RANGE _distance_ PRECEDING/FOLLOWINGGROUPS 模式和框架排除選項。

SCRAM 驗證的通道繫結

PostgreSQL 的先前版本引入了 SCRAM 驗證,以使用公認的標準協定改進密碼的儲存和傳輸。PostgreSQL 11 引入了 SCRAM 驗證的通道繫結,透過防止中間人攻擊來增加使用 SCRAM 的安全性。

使用者體驗增強

PostgreSQL 全球開發團隊認識到,雖然 PostgreSQL 本身包含一套強大的功能,但並非所有功能都易於使用,並且可能需要在開發和生產環境中進行變通。

在 PostgreSQL 11 之前,其中一項功能是使用 ALTER TABLE .. ADD COLUMN 命令,其中新建立的欄具有非 NULL 的 DEFAULT 值。在 PostgreSQL 11 之前,執行上述語句時,PostgreSQL 會重寫整個表,這在作用中系統中的較大表上可能會導致一系列問題。PostgreSQL 11 在大多數情況下消除了重寫表的需求,因此運行 ALTER TABLE .. ADD COLUMN .. DEFAULT .. 將會非常快速地執行。

屬於此類別的另一個功能是無法從 PostgreSQL 命令列 (psql) 直觀地退出。有許多記錄的投訴指出使用者嘗試使用 quitexit 命令退出,但最終發現這樣做的命令是 \q

我們已經聽到了您的挫折感,現在新增了使用關鍵字 quitexit 退出命令列的功能,並希望退出 PostgreSQL 會話現在與使用 PostgreSQL 一樣令人愉快。

其他功能

PostgreSQL 11 中新增了許多其他新功能和改進,其中一些對於特定使用者而言可能與上述內容同等重要或更重要。請參閱發行說明以取得新功能和已變更功能的完整清單。

錯誤與相容性測試

每個 PostgreSQL 版本的穩定性在很大程度上取決於您(社群)使用您的工作負載和測試工具測試即將推出的版本,以便在 PostgreSQL 11 發布之前發現錯誤和回歸。由於這是一個 Beta 版本,因此資料庫行為、功能詳細資訊和 API 仍可能發生細微變更。您的意見反應和測試將有助於確定新功能的最終調整,因此請在不久的將來進行測試。使用者測試的品質有助於確定我們何時可以進行最終發布。

未解決問題的清單公開於 PostgreSQL Wiki 中。您可以使用 PostgreSQL 網站上的此表單回報錯誤

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

Beta 時程表

這是 11 版的第一個 Beta 版本。PostgreSQL 專案將根據測試需要發布其他 Beta 版本,然後是一個或多個候選發布版本,直到 2018 年底的最終版本。如需更多資訊,請參閱Beta 測試頁面。

連結