Java事物

事务产生的原因:

保持事物一致性方法

1.序列化读写

缺点:性能低

排他锁(冲突的队列事物串行)

读写锁(读写分离,读读并行,读写,写读,写写串行)

MVCC(多版本并发控制,每次操作都逻辑时间戳)

逻辑时间戳:类似实现为一个自增的id,主要是为了解决谁先谁后的问题

如果读取数据发生在写之后,那么读操作版本号应该大于写版本号

缺点系统复杂度高

数据库中使用

其他还包括物理时间错 ,即,用时间做时间错

死锁

碰撞检测:

  1. 找到一个维持锁的事物单元
  2. 找到持有的锁
  3. 找到申请的锁
  4. 根据申请的锁查找持有该锁的第二个事物单元
  5. 查找第二个事物单元是否使用第一个事物的锁
  6. 如果相同就结束其中一个事物

 

单机事物

每次版本跟新都记录上一个版本undo日志,用来回滚

对每一个事物加锁防止其他事物访问,事物完成后释放锁(加锁事物过长会影响性能)

读已提交中读锁可以被写锁升级,但读读并行第二个读可能读到前一个读到的数据(即可重复读);读写并行情况下 如果先读的一个数据被第二个写修改,在读数据就会不同(即不可重复读)

 

因为读没加锁

多事物读并行每次都记版本号,当事物冲突时低版本事物回滚,从而保证事物安全

           

分布式事物

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值