并发
并发事务会带来哪些问题?
- 脏读
- 修改丢失
- 不可重复读
- 幻读
什么是脏读和幻读?
脏读是一个事务在处理过程中读取了另外一个事务未提交的数据;幻读是指同一个事务内多次查询返回的结果集不一样(比如增加了或者减少了行记录)。
为什么会出现幻读?幻读会带来什么问题?
因为行锁只能锁定存在的行,针对新插入的操作没有限定,所以就有可能产生幻读。 幻读带来的问题如下:
- 对行锁语义的破坏;
- 破坏了数据一致性。
如何避免幻读?
使用间隙锁的方式来避免出现幻读。间隙锁,是专门用于解决幻读这种问题的锁,它锁的了行与行之间的间隙,能够阻塞新插入的操作 间隙锁的引入也带来了一些新的问题,比如:降低并发度,可能导致死锁。