什么是事务以及乐观锁悲观锁

事务是访问数据库的一个操作序列,数据库通过事务集来完成对数据库的存取;

事务必须服从:原子性,一致性,隔离性和持久性;

1、原子性:原子性就是不可分割性,事务要么全部被执行,要么全部不被执行;全部的子事务提交成功,则所有对数据库的操作被提交数据库的状态发生改变;数据库只要有一条子事务没有被执行,其他子事务对数据库的操作也会被回滚,数据库回到执行事务之前的状态;

2、一致性:事务的执行是的数据库从一种状态变化为另外一种状态;

3、隔离性:在事务提交之前,不允许把该事务对数据库的操作提供给其他事务;

4、持久性:事务一旦正确提交,就会对数据库进行永久性的修改;

悲观锁:悲观锁主要是通过数据库的锁机制来实现的,它在对数据进行操作时会将数据进行加锁,来实现对数据的独占性。

典型的sql语句是:select * from emp where name='scott' for update;

缺点是:开销太大;

实现方式:session.lock等

乐观锁:乐观锁是在数据库加一列version,读取数据时,把version一块读取,提交时必须保证提交的version大于读取时的version否则提交失败;提高了高并发下的数据执行效率;

缺点:具有一定的局限性,只能在自己的系统中来实现,外部系统的用户不受我们控制,容易出现“脏读”;

实现;Hibernate内嵌了乐观锁,通过optimistic-lock=“version”即可;

 

 

转载于:https://my.oschina.net/u/3030491/blog/816549

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值