根據您的描述,看起來自動 VACUUM 與 DDL 遷移同時執行時產生了資源競爭,這在 PostgreSQL 生產環境中其實並不少見。一般來說,我會建議先從較小的調整開始,例如將 vacuum_cost_delay 設定在 5ms 到 20ms 之間觀察效果,讓 VACUUM 在執行期間適度讓出 I/O 資源,避免對線上工作負載造成過大影響。
另外,比起單獨調整 vacuum_cost_delay,我更建議搭配檢查 autovacuum_vacuum_cost_limit、autovacuum_max_workers 以及 DDL 執行時段的安排。有些團隊會將大型 Schema Migration 排程到流量較低的維護時段,以降低與 Autovacuum 衝突的機率。若發現特定大型資料表經常發生問題,也可以考慮針對該資料表設定個別的 Autovacuum 參數,而不是套用全域設定。
最後,建議透過 pg_stat_activity 與 pg_stat_progress_vacuum 持續監控 VACUUM 執行情況,找出真正造成等待的資料表與工作階段,再進一步微調設定。希望以上建議對您有所幫助,如果這個回覆解決了您的問題,歡迎點選 "Accept Answer",讓其他遇到相同問題的使用者也能受益