前面一篇文章谈论了-事务相关的概念
这篇文章主要事务概念中的重难点概念
- 隔离性
- 传播性
隔离性
两个事务并发交错操作同一个数据时,会出现的一些问题,如下,隔离性就是为解决这些问题提供的。注意隔离性有程度之分。
问题1:读的不正确
问题1.1:脏读【读取了别人没有提交的数据(一般的,也要避免)】
问题1.2:不可重复读【一个事务读取的两次中间,别的事务干扰(干扰:修改了数据)】
问题1.3:幻读【跟’不可重复读’类似.一个事务读取的两次中间,别的事务干扰(干扰:删除或者插入了数据】
问题2:写的不正确
问题2.1:回滚导致的丢失更新(必须避免,因为数据都错了)
问题2.2:提交导致的丢失更新(必须避免,因为数据都错了)
上面不同事务交错操作导致的一些问题,对于问题2.1,2.2是要求必须避免的,问题1.1要求尽量避免。问题1.2,1.3只是读的不正确,再读一次就好了。
关于隔离性的一般性结论
一般的,使用read commited就可以了,因为它可以避免’脏读’,而且’并发性’是好的.
而’数据不正确’问题交给’数据库的锁机制’
而’幻读’和’不可重复读’问题,无法解决,可能会在极少的情况下发生.发生了也没有什么大的影响,再读一次就好了
问题1的3种读取错误概念如果不理解可以参考下面链接的图(只用看图就行了,不理解也没影响)
https://blog.csdn.net/qq_33591903/article/details/81672260
问题2的两种丢失更新如果不理解可以参考下面链接的图(只用看图就行了,不理解也没影响):https://blog.csdn.net/u014590757/article/details/79612858
关于jdbc标准提供的4种隔离级别可参考下面的连接的图(只用看图就行了,不理解也没影响)