码迷,mamicode.com
首页 > 其他好文 > 详细

乐观锁与悲观锁随笔

时间:2017-04-28 10:32:10      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:inno   tle   gravity   释放   过程   上下   取出   span   csdn   

原创声明:本文为本人原创作品,绝非他处摘取,转载请注明出处

1.乐观锁

  1. 介绍:认为数据在使用过程中,不会被其他程序修改、所以只有在数据提交时才检测数据是否已经被修改
  2. 实现方法
    1).使用版本号:给数据所在表加个字段,记录数据版本号。提交时检测版本号与未修改前的版本号一不一致。不一致说明数据已经被其他线程修改。
    技术分享
    2).使用时间截:给数据所在表加个字段,记录时间。提交时检测时间与取出的时间截一不一致。不一致说明数据已经被其他线程修改。

  3. 使用场景:如上下级审核文件。

2.悲观锁

  1. 介绍:悲观的认为数据提交时会发生并发冲突,屏蔽一切可能违反数据完整性的操作
  2. 使用方法:在准备修改某数据时,给该数据加锁,加锁失败说明有人正在占用,成功则修改数据提交,事务完成释放锁。
  3. 使用场景:数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。
  4. 注意项:MySQL InnoDB中使用悲观锁一定要关闭自动提交属性,因为MySQL默认使用autocommit模式,也就是说,当你执行一个更新操作后,MySQL会立刻将结果进行提交。 set autocommit=0;

乐观锁与悲观锁随笔

标签:inno   tle   gravity   释放   过程   上下   取出   span   csdn   

原文地址:http://www.cnblogs.com/zhaixiajiao/p/6774383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!