f WHY VACUUM WON’T REMOVE DEAD ROWS ~ 迪貝之家

WHY VACUUM WON’T REMOVE DEAD ROWS

 

這是一個找table bloat原因的case
哈哈...如果你想知道來龍去脈
事件的起源如這篇Po文 :
Tuning Example IV: EDB(Postgres) DB 主機 CPU 滿載
不想知道的話
我直接告訴你原因
因為MVCC的設計
有session正參照到已經被delete的資料
因此vacuum不管跑幾次
表格就是一直長大
大到了影響效能
這是Vacuum執行所出現的關鍵字串
DETAIL: 42427 dead row versions cannot be removed yet.
這是我覺得可能造成dead row無法移除的session

dead row not removed
當然也得感謝某人在今天不斷地追問
我也只好鍥而不捨地把真正地原因找出來
不然我也只是看到前人用drop table來解決
而且還得把AP停掉...
前兩天我聽到的時候
還在納悶...為什麼要停AP
哈..........................
參考資料如下 :
THREE REASONS WHY VACUUM WON’T REMOVE DEAD ROWS FROM A TABLE
VACUUM VERBOSE outputs, nonremovable “dead row versions cannot be removed yet”?