Yos*_*eph 8 mysql locking transaction-isolation read-uncommitted
我们在MySQL中使用InnoDB有一个表,我们使用的是事务隔离级别read uncommitted.为什么设置@x如图所示获得锁定?
mysql> set @x = (select userID from users limit 1);
Query OK, 0 rows affected (0.02 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
尝试从另一个提示更新此表会导致超时错误:
mysql> update users set userID = 1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
Run Code Online (Sandbox Code Playgroud)
您的第一个语句在表上执行 SELECT,因此事务获取一行上的读锁。
第二个事务尝试获取同一个表上的写锁(在所有行上,因为没有WHERE子句),但不能。
您需要在 后发出COMMIT(或) 命令,以便释放读锁。ROLLBACKSET @x = (...)
上面的说法是错误的。我保留这篇文章只是因为下面的评论可能会引起兴趣。
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |