Postgresql
當 autovacuum 鎖定表時,postgresql 無法刪除表
Autovacuuming 過程將 RowExclusiveLock 和 ShareUpdateExclusiveLock 保存在我要刪除的表上。我讀到 autovacuum 應該在送出 DROP TABLE 命令時自動取消,但它沒有發生。也許我的postgresql配置錯誤?此外,我沒有對這些表進行任何刪除或更新操作——只有插入和刪除。我可以在那些特定的表上禁用 autovacuum 嗎?
如果沒有發生刪除或更新,則 autovacuum 不應處理該表,每
autovacuum_analyze_threshold
. 有關相關配置參數,請參見自動吸塵。您可以設置
log_autovacuum_min_duration
為零以幫助確定正在自動清理的內容。在任何情況下,都可以完全禁用特定表的 autovacuum,方法是:
ALTER TABLE tablename SET (autovacuum_enabled = false, toast.autovacuum_enabled = false);
這記錄在 儲存參數中。
autovac 是否“防止環繞”(如 pg_stat_activity 中所述)?如果是這樣,PostgreSQL 認為這是緊急情況並拒絕讓出鎖。
在這種情況下,這是相當不幸的,因為一旦你放下桌子,情況就會得到解決。但它不知道你為什麼要鎖。