乐观锁和悲观锁
来源:互联网 发布:理正软件 编辑:程序博客网 时间:2024/06/08 20:56
乐观锁:是对外界的一种认识,认为外界的并发是乐观的,它可以允许所有的线程进行对数据的更新,但是它只有在修改数据后,提交数据的时候,判断是否并发被修改过。然后交给用户去处理,是失败还是成功。乐观锁对于数据的脏读没有办法避免。
悲观锁:认为外界的并发是悲观的,它保证当一个事务占用这个处理过程之后,其他的并发事务处理,不允许进入修改。
乐观锁的实现方式:
1. 使用版本号。
一个客户端修改数据,当数据提交时,发现这个数据的版本已经不是原来查询的数据版本,则修改不成功;如果版本一致,则提交此修改,并版本加1。
select *, version from table1 where condition;
update tables set column, version = #{version} + 1 where condition and version = #{version};
2. 使用timestamp标记此数据。
悲观锁的实现方式:
采用数据库自带的事务排他锁。当事务没有提交时,其他事务处于等待状态,直到提交之后,释放排它锁。所以对于mysql数据库来说要把全局变量autoCommit关闭。
begin;
select * from table1 for update;
commit;
阅读全文
0 0
- 悲观和乐观锁
- 乐观锁和悲观锁
- 悲观锁和乐观锁
- 乐观锁和悲观锁
- 乐观锁和悲观锁
- 悲观锁和乐观锁
- 乐观锁和悲观锁
- 悲观锁和乐观锁
- 悲观锁和乐观锁
- 悲观锁和乐观锁
- 悲观锁和乐观锁
- 乐观锁和悲观锁
- 乐观锁 和 悲观锁
- 悲观锁和乐观锁
- 乐观锁和悲观锁
- 乐观锁和悲观锁
- 乐观锁和悲观锁
- 乐观锁和悲观锁
- 网络编程基础知识笔记(1)
- HashMap实现原理分析
- MTU值及查询方法
- 辩论5 辩论圣经
- iOS 使用AFNetworking遇到异常 Request failed: unacceptable content-type: text/html
- 乐观锁和悲观锁
- Android 之ActivityThead、ActivityManagerService 与activity的管理和创建
- 某饭店招待国外考察团
- [PHP学习]PHP中论foreach里面是否可以写数据查询语句?
- java 多态
- Java初级工程师面试题精选3
- mongodb在java中进行模糊查询以及时间段查询总结
- imageloader加载的详解
- 模拟实现网易新闻客户端