Postgres Pro Enterprise 17 的發布,標誌著資料函式庫系統(DBMS)領域的重大進展。本次更新不僅在效能、可用性與安全性方面進行了強化,更引入了多項創新功能,旨在簡化管理、最佳化資源利用,並提升整體系統效能。其中,Proxima 技術、內建佇列管理、智慧資料儲存等功能,無疑是本次更新的亮點。本文將探討 Postgres Pro Enterprise 17 的各項新功能,剖析其技術細節與實際應用場景。
Proxima:新世代資料函式庫解決方案
Proxima 的出現,徹底改變了傳統資料函式倉管理的方式。它整合了連線池(Connection Pooling)、查詢代理(Query Proxy)和負載平衡(Load Balancing)等多項功能,並將其內建於 Postgres Pro 企業級 DBMS 核心中。這種整合不僅提高了效率,更顯著降低了延遲。
連線池:降低延遲,提升效率
Proxima 透過建立可供多個客戶端工作階段使用的連線池,大幅減少了建立新連線所需的時間。傳統的連線建立過程,需要耗費大量的時間在連線建立和記憶體分配上,而 Proxima 則可以跳過這些耗時的步驟,以最小的延遲建立連線。此外,Proxima 還能減輕主伺服器在流量加密和使用者授權方面的負擔,確保資源的高效利用。
查詢代理:自動化查詢路由
在具有高用性(High Availability, HA)的環境中,確保寫入請求始終到達正確的長官節點(Leader Node)至關重要。Proxima 能夠自動檢測 BiHA 叢集中的指定長官節點,並透明地將客戶端查詢重定向到該節點,即使客戶端最初已連線到副本(Replica)。這消除了應用程式手動追蹤叢集拓撲變化的需求,簡化了開發與維運流程。
負載平衡:最佳化資源分配
Proxima 能夠監控副本上的負載,並動態地在副本之間分配進來的連線。這可以防止特定副本過載,並最大化整體系統效能。透過負載平衡,Proxima 確保了資源的有效利用,並提升了系統的整體穩定性。
pgpro_queue:資料函式庫列管理
Postgres Pro Enterprise 引入了 pgpro_queue 擴充套件,讓使用者可以直接在資料函式庫理訊息佇列(Message Queue),而無需依賴外部服務。這使得複雜的業務邏輯可以在資料函式庫實作,簡化了架構,並降低了維護成本。
事務性:保障訊息處理可靠性
pgpro_queue 確保了訊息處理的可靠性。一條訊息要麼成功處理,要麼回傳佇列以進行重試。如果訊息處理器出現故障,則相應的事務將被回復,並設定可見性延遲以防止迴圈。這種機制確保了訊息不會遺失,並保障了系統的穩定性。
優先排序、過濾與排除:靈活的訊息管理
pgpro_queue 提供了靈活的訊息管理功能,包括訊息優先排序、根據屬性過濾,以及長時間未處理訊息的排除。這些功能讓使用者可以根據實際需求,對訊息進行精細化的管理,提升了系統的效率。
訊息儲存模型:持久化儲存,確保高用性
訊息會儲存在佇列中,直到被讀取。所有訊息及其狀態在 Postgres Pro 伺服器重啟或容錯移轉期間都會被保留,確保可靠性和高用性。這種持久化儲存機制,保障了訊息的安全性,並確保了系統的穩定執行。
查詢計畫管理工具:提升查詢效能
Postgres Pro 17 Enterprise 引入了增強的查詢計畫管理工具,使效能最佳化變得更加容易。透過 pgpro_multiplan 擴充套件,管理員可以為每個查詢儲存無限數量的批准執行計畫。系統會根據查詢引數選擇最佳計畫,並可以在伺服器之間轉移計畫以提高穩定性。
pgpro_multiplan:多重計畫管理
pgpro_multiplan 擴充套件取代了舊版的 sr_plan,允許管理員為每個查詢儲存無限數量的批准執行計畫。系統會根據查詢引數選擇最佳計畫。計劃也可以在伺服器之間轉移以提高穩定性。
Hintset:根據提示的執行計畫
pgpro_multiplan 引入了一種新的硬編碼執行計畫類別——hintset。它由根據凍結執行計畫形成的一組提示組成,包括最佳化器環境變數、聯接類別、聯接順序和資料存取方法,類別似於 pg_hint_plan 擴充套件所支援的。與以前的計畫類別不同,hintset 不是與物件 ID (OID) 相關聯,而是與物件名稱相關聯。這確保了即使在重新建立表或新增欄位時也能保持穩定性。
範本計畫:簡化計畫管理
從版本 17.2.2 開始,可以透過使用萬用字元將單個計畫分配給僅在表名上有所不同的查詢組。這簡化了動態表名的計畫管理,對於 1C 使用者(temp_tab_*)特別有利。
查詢註冊助手:自動化計畫捕捉
選擇和儲存查詢的過程現在已自動化以進行計畫管理。所有執行的查詢及其計畫都儲存在專用表中,允許管理員輕鬆選擇和“凍結”計畫,而無需與即時查詢互動。這透過儲存查詢 ID 及其計畫簡化了計畫捕捉。
自適應執行與查詢最佳化:動態調整,提升效能
Postgres Pro Enterprise 17 引入了根據工作負載條件動態調整的功能,加速複雜查詢的執行。
AQE(自適應查詢執行):動態重新計畫
系統自動檢測長時間執行的查詢,並動態地重新安排和即時重新執行它們。如果查詢超過執行時間、遇到計畫器錯誤或觸發記憶體溢位,AQE 可以重新啟動查詢。觸發條件現在包括時間、記憶體和基數不比對。支援擴充套件協定/預處理陳述式。
AQO Enterprise:自動修正計畫器錯誤
從版本 17.2.2 開始,此模組持續從所有執行的查詢中學習,自動修正計畫器錯誤,而無需人工干預。它利用查詢執行歷史和 Delta Learning 基數估算方法,透過 WAL 在副本之間同步知識函式庫
安全性與存取控制增強:強化資料保護
Postgres Pro Enterprise 17 在安全性方面進行了顯著改善。pgpro_usage 擴充套件收集每個使用者的資料函式庫和函式使用統計,生成有關實際許可權使用的報告並識別不必要的存取許可權。報告列出了資料函式庫、使用者、他們的許可權以及授予這些許可權的角色。安全工作者可以檢視哪些許可權正在被使用,並移除不必要的許可權以增強安全性。資料收集由 pg_stat_all_tables_per_user 和 pg_stat_all_functions_per_user 系統檢視處理。
智慧資料儲存與 pgpro_ilm:最佳化儲存成本
pgpro_ilm 擴充套件透過將不常存取的資料轉移到低成本磁碟並在需要時進行壓縮,自動化儲存最佳化。這使得透過將表或其部分移動到具有不同屬性的其他儲存中來實作空間節省和高效的資源利用。
熱圖:追蹤資料存取模式
跟蹤每個表和分割槽的存取時間(讀取和修改),以點陣圖形式視覺化。根據這些資訊,生成熱圖,pgpro_ilm 用於跟蹤“過時”資料。
策略:自動化資料移動與壓縮
您可以根據最後的存取或修改時間以宣告方式定義資料移動和壓縮的規則。支援“無存取”和“無修改”策略。策略可以透過排程器自動執行。很少修改的資料會透過 CFS 自動移動到壓縮表空間。
基礎設施與可用性增強:簡化管理,提升穩定性
Postgres Pro Enterprise 17 引入了新功能,簡化了設定、監控和叢集管理,為管理員提供了更多最佳化基礎設施的靈活性。BiHA 支援使用者定義的 SQL 函式來新增/移除節點和長官者可用性檢查,並引入了一個新的 biha_callbacks_user 角色。在兩節點設定中,可以在第三個節點上佈署輕量級的 BiHA 裁判,而無需使用者資料函式庫部資料中心的遠端副本現在可以晉升為長官者。多主模式加速在追趕模式下滯後節點的交易應用,減少複製延遲。pgpro_pwr 現在跟蹤擴充套件版本,並允許在報告中對特定資料函式庫資料遮罩。此外,ALTER TABLE 命令現在包含兩個新的子命令:SPLIT PARTITION,將一個分割槽劃分為多個分割槽,以及 MERGE PARTITIONS,將多個分割槽合併為一個。pgpro_autopart 擴充套件在新增或修改表的分割槽鍵時動態建立分割槽,消除了手動建立新分割槽的需要。
Postgres Pro Enterprise 17 的發布,為資料函式庫帶來了諸多創新與改進。從 Proxima 的效能提升,到 pgpro_queue 的靈活佇列管理,再到 pgpro_ilm 的智慧儲存最佳化,每一項新功能都旨在簡化管理、提升效能,並降低成本。這些改進不僅提升了資料函式庫體效能,更為企業提供了更具彈性與效率的資料管理解決方案。
在資料函式庫系統的世界中,Postgres Pro 17 以其一系列的創新功能和工具脫穎而出。這些創新不僅提升了資料函式庫能和可擴充套件性,還增強了安全性並簡化了管理流程。本文將探討 Postgres Pro 17 的主要技術亮點,包括 Proxima、pgpro_queue、pgpro_multiplan、AQE 和 pgpro_ilm 等工具,以及它們如何協助開發者和資料函式庫員構建更高效和可靠的應用程式。
Proxima:加速查詢的秘密武器
Proxima 是 Postgres Pro 17 中的一個關鍵元件,它透過加速查詢執行來提高資料函式庫。Proxima 採用先進的索引技術和查詢最佳化策略,能夠顯著減少查詢的回應時間。這對於需要快速回應的應用程式,如高流量的網站或即時分析系統,尤其重要。
Proxima 的設計目標是無縫整合到現有的 Postgres Pro 環境中,這意味著開發者和資料函式庫員無需進行大量的程式碼修改或設定調整即可利用其優勢。此外,Proxima 還提供了豐富的監控和診斷工具,幫助使用者瞭解其效能並進行必要的調整。
pgpro_queue:高效的訊息佇列解決方案
在現代應用程式架構中,訊息佇列(Message Queue)扮演著至關重要的角色,用於在不同的服務和應用程式之間傳輸訊息。pgpro_queue 是 Postgres Pro 17 提供的一個高效訊息佇列解決方案,它允許開發者構建鬆散耦合的系統,從而提高系統的可擴充套件性和可靠性。
pgpro_queue 支援多種訊息傳輸模式,包括點對點和發布/訂閱。它還提供了豐富的 API 和工具,方便開發者進行訊息的生產、消費和管理。此外,pgpro_queue 還具有高用性和容錯能力,確保訊息能夠可靠地傳輸,即使在系統發生故障時也能正常運作。
pgpro_multiplan:最佳化複雜查詢的利器
對於複雜的查詢,資料函式庫需要仔細評估不同的執行計畫,以找到最佳的執行方式。pgpro_multiplan 是 Postgres Pro 17 中的一個查詢最佳化工具,它能夠生成多個執行計畫並選擇最佳的一個來執行查詢。這對於包含大量表連線、子查詢或聚合操作的複雜查詢尤其有效。
pgpro_multiplan 的最佳化過程包括成本估算、統計資訊收集和執行計畫驗證。它還能夠根據實際的執行情況調整執行計畫,從而實作動態最佳化。透過使用 pgpro_multiplan,開發者可以顯著提高複雜查詢的效能,並減少資料函式庫載。
AQE:自適應查詢執行引擎
AQE(Adaptive Query Execution)是 Postgres Pro 17 中的一個創新功能,它允許資料函式庫在查詢執行過程中根據實際情況調整執行計畫。這種自適應能力使得資料函式庫更好地應對變化,如資料分佈不均、硬體資源變化或查詢條件變化。
AQE 的工作原理是在查詢執行過程中收集統計資訊,並根據這些資訊調整執行計畫。例如,如果 AQE 檢測到某個表的資料分佈不均,它可能會選擇使用不同的索引或連線方式來提高效能。AQE 還能夠根據硬體資源的變化調整執行計畫,例如在記憶體不足時減少平行度。
pgpro_ilm:智慧型的資料生命週期管理
在許多應用程式中,資料的價值會隨著時間的推移而降低。例如,舊的日誌資料或歷史交易記錄可能不再需要頻繁存取,但仍然需要保留以滿足合規性要求。pgpro_ilm(資料生命週期管理)是 Postgres Pro 17 提供的一個智慧型資料管理工具,它允許資料函式庫員根據資料的年齡、大小或其他屬性自動執行不同的操作,如壓縮、歸檔或刪除。
pgpro_ilm 支援根據規則的資料管理策略,允許資料函式庫員定義何時以及如何處理不同的資料。它還提供了豐富的監控和報告功能,幫助管理員瞭解資料的使用情況和管理效果。透過使用 pgpro_ilm,企業可以有效地管理其資料資產,降低儲存成本,並提高資料的可用性。
其他增強功能與創新
除了上述工具之外,Postgres Pro 17 還包含了許多其他的增強功能和創新,旨在提高效能、安全性、可擴充套件性和易用性:
- 自動分割槽:Postgres Pro 17 擴充套件了自動分割槽功能,支援在使用根據間隔的分割槽時自動建立分割槽。
- PPEM 2.0:PPEM 2.0 具備重新設計的架構和根據 Golang 的平台、改進的使用者介面、查詢計畫視覺化、叢集狀態顯示、鎖樹、工作階段等待設定、時間點還原、架構物件管理,以及針對 1C/OLTP 的自動例項調整。
Postgres Pro 17 透過引入 Proxima、pgpro_queue、pgpro_multiplan、AQE 和 pgpro_ilm 等工具,為開發者和資料函式庫員提供了一個強大而全面的解決方案,從而構建高效、可靠與安全的應用程式。這些工具不僅提高了資料函式庫能和可擴充套件性,還簡化了管理流程,降低了營運成本。隨著資料函式庫的不斷發展,Postgres Pro 17 將繼續引領潮流,為企業提供更具價值的解決方案,與協助企業在數位時代取得成功。