Postgresql

當 autovacuum 鎖定表時,postgresql 無法刪除表

  • September 25, 2017

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 認為這是緊急情況並拒絕讓出鎖。

在這種情況下,這是相當不幸的,因為一旦你放下桌子,情況就會得到解決。但它不知道你為什麼要鎖。

引用自:https://dba.stackexchange.com/questions/75082