选择查询阻止事务表上的读/写/更新操作

时间:2009-11-16 11:22:12

标签: mysql

2 个答案:

答案 0 :(得分:1)

如果您的事务隔离级别为REPEATABLE READ或更低,则SELECT语句不会创建锁定,除非您使用“FOR UPDATE”。

检查你的txn隔离级别是什么。

无需使用READ UNCOMMITTED,甚至READ COMMITTED。只是避免SERIALIZABLE。

另一方面,select语句仍将耗尽可能影响机器行为的资源。

您是否在4M行表上进行全表扫描?

答案 1 :(得分:0)

(根据MarkR的回答重读后编辑)

InnoDb交易的online help text非常好。默认隔离级别是可重复读取。根据MarkR的回答,默认隔离级别的SELECT不会发出行锁,并且在其事务处于打开状态时不会阻止更新或插入。

如果您在serializable(最高隔离级别)上运行,则可以使用以下命令恢复默认值:

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ

这仅更改当前会话的隔离级别。