共用方式為


在適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中執行智慧型微調

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

適用於 PostgreSQL 的 Azure 資料庫彈性伺服器具有智慧型微調功能,其設計目的是自動增強效能,並協助防止問題。 智慧型調整會持續監視適用於 PostgreSQL 的 Azure 資料庫彈性伺服器資料庫狀態,並根據工作負載動態調整資料庫。

此功能包含兩個自動調整功能:

  • 自動清除微調:此功能會追蹤膨脹比率,並據以調整自動清除設定。 它會同時考慮目前和預測的資源使用狀況,以防止工作負載中斷。
  • 寫入微調:此功能會監視寫入作業的磁碟區和模式,並修改影響寫入效能的參數。 這些調整可增強系統效能和可靠性,以主動避免潛在的併發問題。

您可以使用 Azure 入口網站Azure CLI 以啟用智慧型微調。

為何使用智慧型微調?

自動清除處理序是維護適用於 PostgreSQL 的 Azure 資料庫彈性伺服器資料庫之健康情況和效能的重要部分。 它可協助回收無效資料列所佔用的儲存體、釋出空間並讓資料庫保持順暢執行。

同樣重要的是微調資料庫內的寫入作業。 此工作通常落在資料庫管理員身上。 持續監視資料庫和微調寫入作業可能具有挑戰性且耗時。 當您處理多個資料庫時,這項工作會變得越來越複雜。

這就是智慧型微調發揮作用的地方。 您可以使用智慧型微調來自動監視和調整資料庫,而不是手動監督和調整資料庫。 然後,您就可以專注於其他重要工作。

智慧型微調中的自動清除功能會監視膨脹比率,並視需要調整設定,以獲得最佳資源使用率。 它會主動管理資料庫的「清除」處理序,並降低過期資料可能造成的效能問題。

寫入微調功能會觀察寫入作業的數量和交易模式。 它會以智慧方式調整參數,例如 bgwriter_delaycheckpoint_completion_targetmax_wal_sizemin_wal_size。 如此一來,即使在高寫入負載下,它也能提升系統效能和可靠性。

當您使用智慧型微調時,您可以依賴適用於 PostgreSQL 的 Azure 資料庫彈性伺服器來節省寶貴的時間和資源,以維持資料庫的最佳效能。

智慧型微調的運作方式為何?

智慧型微調是一個持續監視和分析程序,不僅會了解工作負載的特性,也會追蹤目前的負載和資源使用量,例如 CPU 或 IOPS。 它不會干擾應用程式工作負載的正常運作。

此處理序可讓資料庫透過辨別執行個體目前的膨脹比率、寫入效能和檢查點效率,以動態調整工作負載。 透過這些深入解析,智慧型微調會部署微調動作,以增強工作負載的效能,並避免潛在的陷阱。

自動清除微調

智慧型調整會調整與自動清除相關的五個參數:autovacuum_vacuum_scale_factorautovacuum_cost_limitautovacuum_naptimeautovacuum_vacuum_thresholdautovacuum_vacuum_cost_delay。 這些參數會規範元件,例如:

  • 啟動 VACUUM 處理序的資料表部分。
  • 成本型清除延遲限制。
  • 自動清除執行之間的暫停間隔。
  • 啟動 VACUUM 處理序所需的更新或無效 Tuple 最小計數。
  • 清理回合之間的暫停持續時間。

重要

智慧型微調會修改伺服器層級的自動清除相關參數,而不是個別的資料表層級。 此外,如果自動清除已關閉,智慧型微調就無法正確運作。 若要讓智慧型微調最佳化處理序,必須啟用自動清除功能。

雖然自動清除精靈會觸發兩個作業 (VACUUMANALYZE) ,但智慧型微調只會微調 VACUUM 處理序。 此功能目前不會調整 ANALYZE 處理序,其會收集資料表內容的統計資料,以協助適用於 PostgreSQL 的 Azure 資料庫彈性伺服器查詢規劃工具選擇最適合的查詢執行計畫。

智慧型微調包括測量 CPU 和 IOPS 等資源使用率的保護措施。 當執行個體負載過重時,它不會增加自動清除活動。 如此一來,智慧型微調可在有效清除作業與系統的整體效能之間確保取得平衡。

當智慧型微調正在最佳化自動清除時,它會透過使用有關有效 Tuple 和無效 Tuple 的統計資料來考量伺服器的平均膨脹。 為了減少膨脹,智慧型微調可能會減少 scale factor 或 naptime 等參數。 它可能會更快觸發 VACUUM 處理序,並視需要減少回合之間的延遲。

另一方面,如果膨脹很小且自動清除處理序過於積極,則智慧微調可能會增加 delay、scale factor 和 naptime 等參數。 此平衡可將膨脹降至最低,並協助確保自動清除處理序有效率地使用資源。

寫入微調

智慧型微調會調整與寫入微調相關的四個參數:bgwriter_delaycheckpoint_completion_targetmax_wal_size、和 min_wal_size

bgwriter_delay 參數決定喚醒背景寫入處理序以清理「已變更」緩衝區 (新緩衝區或修改緩衝區) 的頻率。 背景寫入器處理序是適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中處理寫入作業的三個處理序之一。 另一個是檢查點器處理序和後端寫入 (標準用戶端處理序,例如應用程式連線)。

背景寫入器處理序的主要角色是減輕主要檢查點處理序的負載,並減少後端寫入的壓力。 bgwriter_delay 參數會控管背景寫入器回合的頻率。 藉由調整此參數,您也可以最佳化資料操作語言 (DML) 查詢的效能。

checkpoint_completion_target 參數是適用於 PostgreSQL 的 Azure 資料庫彈性伺服器支援的第二個寫入機制的一部分,特別是檢查點處理序。 檢查點會以 checkpoint_timeout 定義的固定間隔發生 (除非強制超過設定的空間)。 為了避免大量頁面寫入而造成 I/O 系統負載過重,在檢查點期間寫入已變更緩衝區會分散在一段時間內。 checkpoint_completion_target 參數透過使用 checkpoint_timeout 將持續時間指定為檢查點間隔的一部分來控制此持續時間。

checkpoint_completion_target 的預設值為 0.9 (自 PostgreSQL 14 起)。 此值通常效果最佳,因為它將 I/O 負載分散到最大時間段內。 在極少數情況下,由於所需預寫記錄檔 (WAL) 區段數量發生非預期的波動,檢查點可能無法及時完成。 對效能的潛在影響是 checkpoint_completion_target 成為智慧微調目標計量的原因。

限制和已知問題

  • 智慧型微調只會在特定範圍內進行優化。 此功能有可能不進行任何變更。
  • 智慧型微調不會調整 ANALYZE 設定。
  • 目前,具有四個或更多 vCore 的一般用途和記憶體最佳化伺服器運算層支援自動清除微調。 不支援高載伺服器計算層。

下一步