我有一個關於事務隔離級別和在mysql中鎖定的問題。READ COMMITTED超出鎖等待超時
我有一個查詢弟妹鎖定超時錯誤:
java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
的查詢基本上嘗試與特定DATE_ID刪除記錄。順便說一句,date_id也是索引。但大多數情況下,沒有記錄匹配,即它不會刪除任何內容。
經過一番調查後,我發現它可能是一個罪魁禍首長期運行的查詢,它在同一張桌子上做了一個範圍選擇。然而,我感到困惑的是事務處理在隔離級別「READ COMMITTED」。所以我不知道爲什麼需要一個鎖,爲什麼它可能會超時(特別是考慮沒有匹配的記錄刪除)
先謝謝您!
使用'SHOW INNODB STATUS'來查看你的SQL塊是什麼類型的? – 2014-12-06 09:44:55
您是否使用InnoDb表或MyIsam表?在MyIsam編寫器中,阻止讀取器,反之亦然,一個簡單的SELECT語句將鎖定查詢中涉及的所有表,並阻止編寫器。 – krokodilko 2014-12-06 11:17:30