2012-05-12 58 views
8

我有一個在任何時間點都有數百個活動連接的數據庫。當我使用DROP USER sql語句刪除用戶帳戶時,需要大約4秒鐘,在此期間所有其他連接都具有「正在檢查權限」狀態。這意味着要刪除1000個用戶,我將有效地將數據庫鎖定4000秒,這是不可接受的。不過,我注意到,從mysql.users表中刪除用戶行是即時的。DROP USER和從mysql.user表中刪除一行之間的區別

正在從mysql.users kosher刪除一行嗎?與使用DROP USER相比,有哪些缺點?我是否在其他地方留下陳舊的行?有傳播問題嗎?我很可能不得不走這條路,但我想知道我需要做什麼其他清理工作。

+0

如果您在單個事務中發出1000條DROP USER語句,它是否會比4000秒快? (我意識到這是一個荒謬的數字用於說明,但我很好奇,如果時間罰款只能採取一次,即使多滴...) – sarnold

+1

偉大的問題。我確實在測試。不幸的是,不會,所花費的時間與被丟棄的用戶數量成比例增長。編輯:如果在單個DROP USER命令中指定了多個用戶,則也是如此。 – BrainCore

回答

3

取決於你的MySQL版本

刪除用戶MySQL <= v5.0僅刪除用戶記錄,但沒有特權。 MySQL >= v5.0.2在一個去做。

也可以傳遞多個用戶。

+0

準確地說,DROP USER只會從mysql.user和mysql.tables_priv中刪除行,並且什麼都不做? – BrainCore

+1

關閉我的頭頂,Drop用戶替換了需要撤銷特權,從用戶表中刪除記錄並刷新特權 – codemonkee

相關問題