读未交:性能最好,工作不可能用
读已交:
可重复读:保证同一个事务读取相同的,是一样的
串行化: where区间锁 性能最低
悲观锁: fullupdate
乐观锁:cas机制 时间戳,版本号,
脏读:读到你还没有提交的数据
事务A读取商品表,修改商品,未commit
事务B开启事务读取商品表,读取到A对商品表修改的数据,此时A事务未commit
若A回滚,B读的是错误数据
解决方案:提升事务隔离级别:将读未提交,改为读已提交
不可重复读:
在两次读取数据中间有人改了数据
读未提交和读已提交均会有不可重复读的状况
幻读:
解决幻读,不可以通过串行化,失去并发能力,行锁无法锁住插入,可以锁住间隙,间隙锁和行锁的结合.
死锁条件:
在无外力干预的情况下无法断开
1.互斥条件:多个线程无法同时使用一个资源.
2.持有并等待,等待过程中不会释放已有资源
3.不可剥夺,在自己未完成之前,不可能释放
4.形成线程和资源之间请求和等待的环形图.(循环等待)
如果发生死锁就只能重新启动
解决方案:
1.一次性拿到所有资源(破坏.持有并等待)
2.占用资源的线程在进一步申请资源的时候如果拿不到,就释放已有的资源.(破坏不可剥夺)
3.让资源的使用有一个线性的关系(破坏循环等待)