我有一个关于事务隔离级别和在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