我有一個非常慢的查詢,我需要不時在MySQL數據庫上運行。如果您嘗試更新正在查詢的表,MySQL會執行什麼操作?
我發現嘗試更新正在查詢的表將被阻止,直到查詢完成。
我想這是有道理的,否則查詢的結果可能不一致,但對我來說並不理想,因爲查詢的重要性比更新低得多。
所以我的問題真的有兩個部分:
出於好奇,究竟是什麼做的MySQL在這種情況呢?它是否在查詢期間鎖定表格?或者嘗試在更新之前鎖定它?
有沒有辦法讓慢查詢不阻塞?我想這些選項可能是:
- 當需要更新時終止查詢。
- 在更新發生之前對錶的副本運行查詢
- 只讓查詢出錯。
任何人有什麼想法?
謝謝。不幸的是,我被困在MyISAM中......否則,聽起來像切換到InnoDB將是答案... – Ben 2009-01-12 15:23:48
UPDATE LOW_PRIORITY不允許UPDATE與SELECT相同。它在決定下一次要授予的鎖定時與排隊順序有關。 – 2009-01-12 15:57:00