Postgresql
Postgres:刪除數據庫會影響性能
我在一個託管多個大型數據庫的數據庫伺服器上工作,包括不再使用的數據庫。我想刪除其中一個舊數據庫,它已經花費了比我預期更長的時間(超過 40 秒)然後我注意到伺服器的性能受到了顯著影響,甚至變得無響應。幸運的是,我最終能夠終止查詢並使伺服器恢復穩定狀態。
你能幫我理解嗎:
- 性能影響的原因可能是什麼?我會假設刪除數據庫既便宜又快速。
- 清理數據庫伺服器的最佳方法是什麼?在刪除數據庫之前順序刪除每個表會更好,還是我可以做任何其他事情來安全快速地刪除數據庫?
謝謝!
我會假設刪除數據庫既便宜又快速。
truncate tbl
不,這有點像和之間的區別delete from tbl
。前者只是“忘記”數據行,後者遍歷每一行,記錄其刪除並擺脫它。如果有一個選項可以以同樣的方式“忘記”數據庫,那麼這將是“便宜且快速”的。
短篇小說 - 沒有這樣的選擇。
刪除數據庫可以擺脫一切。這將破壞磁碟並影響伺服器上的所有其他內容。
這種真正“重量級”的破壞性活動是維護期的目的。
如果您有大量其他數據庫或遇到某種可能導致停止的鎖定問題,則刪除數據庫需要更新所有其他數據庫
pg_catalog
模式(例如: table )中的記錄。pg_catalog.pg_database
您可以通過刪除數據庫中的所有模式來獲得刪除數據庫的大部分好處:
DROP SCHEMA PUBLIC CASCADE;
等等。這將在不鎖定任何其他數據庫的情況下執行。之後等到一個安靜的時間刪除數據庫。現在傳出數據庫沒有表,鎖定的持續時間會更短。