MySQL在Read Uncommitted级别下写操作加X锁

很多文章认为MySQL在读未提交(Read Uncommitted)的隔离级别下,写操作是不加锁的,然而实际上并不是,在RU级别下,写操作加有X锁

实践出真知

以前,我也认为RU隔离级别下,写操作不会加锁。偶然间,看到一篇优质的文章《查看Mysql正在执行的事务、锁、等待》,文章介绍了查看锁的语句:

select * from information_schema.innodb_locks;

实验表:test

MySQL在Read Uncommitted级别下写操作加X锁_第1张图片

session 1

设置session隔离级别为RU,开启事务,更新,但不commit。

MySQL在Read Uncommitted级别下写操作加X锁_第2张图片

session 2

设置session隔离级别为RU,开启事务,更新,等待锁。

MySQL在Read Uncommitted级别下写操作加X锁_第3张图片

查询目前的锁情况

693597-20180516143801133-1460983445.png

可以看到:在RU级别下,写操作有X锁

参考文章
查看Mysql正在执行的事务、锁、等待

转载于:https://www.cnblogs.com/acode/p/9045929.html

你可能感兴趣的:(MySQL在Read Uncommitted级别下写操作加X锁)