事务的并发问题

2020-11-08  本文已影响0人  寂静的春天1988

事务并发可能会引起以下几种问题
1、脏读
事务B读到了事务A未提交的事务。

2、幻读


幻读.png

新增一个用户也会发生幻读,同理。

3、不可重复读


不可重复读.png

和幻读类似,不过是对不可重复读是对数据的更新,而幻读是对数据的新增或者删除。

4、第一类丢失更新(回滚丢失)


回滚丢失.png

事务A的回滚覆盖了事务B的修改操作,造成了数据异常。

5、第二类丢失更新(提交丢失)


提交丢失.png

事务A的提交覆盖了事务B的修改操作,造成了数据异常。和回滚丢失很类似,不过是事务提交覆盖了数据。

为了解决事务的并发问题,mysql提供了四种隔离级别。


隔离级别.png

Repeatable Read(可重读):这是MySQL的默认事务隔离级别,mysql自身解决了幻读和第一类丢失更新的问题。所以mysql只存在提交丢失。

怎么解决提交丢失问题?
1、悲观锁:select ... for update

2、乐观锁:使用版本号机制。

存留的疑问:mysql怎样解决的幻读和第一类丢失更新的问题?

上一篇 下一篇

猜你喜欢

热点阅读