跳到主要内容

并发

并发事务会带来哪些问题?

  • 脏读
  • 修改丢失
  • 不可重复读
  • 幻读

什么是脏读和幻读?

脏读是一个事务在处理过程中读取了另外一个事务未提交的数据;幻读是指同一个事务内多次查询返回的结果集不一样(比如增加了或者减少了行记录)。

为什么会出现幻读?幻读会带来什么问题?

因为行锁只能锁定存在的行,针对新插入的操作没有限定,所以就有可能产生幻读。 幻读带来的问题如下:

  • 对行锁语义的破坏;
  • 破坏了数据一致性。

如何避免幻读?

使用间隙锁的方式来避免出现幻读。间隙锁,是专门用于解决幻读这种问题的锁,它锁的了行与行之间的间隙,能够阻塞新插入的操作 间隙锁的引入也带来了一些新的问题,比如:降低并发度,可能导致死锁。