事务有四大特性---------------原子性,一致性,隔离性,持久性。
其中的读写问题是发生在隔离性这一特性上。
什么问题呢?
读问题
--------脏读,不可重复读,幻读
什么是脏读?
B事务update 一个数据 未提交 ,却可以在A事务中查询到变化
怎么解决?
设置 A B事务隔离级别 为 READ COMMITTED(读已提交),这一隔离级别解决了脏读,但却带来了不可重复读问题,怎么解决?;
设置 A B事务隔离级别 为 repeatable read(可重复读) ,这一隔离级别会带来幻读问题,怎么解决?
设置 A B事务隔离级别为 串行行 ,可解决 脏读,不可重复读,幻读,但效率低,因为 从 start transaction 开始 只要一个事务 没有commit 另一个事务就不能开始;
写问题
丢失更新
怎么解决?
---悲观锁
----乐观锁
可参考上一篇 CAS(乐观锁)!