数据库乐观锁 & 悲观锁
2015-12-29 19:34
204 查看
数据库乐观锁的实现:
在数据库中增加一个version字段。读数据时,将该version读出,更新数据库数据,在update语句的条件中,增加判断条件,只有当前的版本号等于数据库的版本号才去更新数据库,并且在更新时,将version的值也需要加1.
事例如下:
(1) 读数据库中的数据,取得当前version值;
(2) 业务逻辑的处理。
(3) update table set version=version+1 where version = #version#
如果数据库中的version被更改,则会导致更新失败。
悲观锁:
就是在读读数据之前就将数据库锁住,然后更新完之后,再将锁释放。是利用数据库层面的锁机制。
缺点:数据库性能消耗非常大。
在一般的系统中,采用乐观锁。
在数据库中增加一个version字段。读数据时,将该version读出,更新数据库数据,在update语句的条件中,增加判断条件,只有当前的版本号等于数据库的版本号才去更新数据库,并且在更新时,将version的值也需要加1.
事例如下:
(1) 读数据库中的数据,取得当前version值;
(2) 业务逻辑的处理。
(3) update table set version=version+1 where version = #version#
如果数据库中的version被更改,则会导致更新失败。
悲观锁:
就是在读读数据之前就将数据库锁住,然后更新完之后,再将锁释放。是利用数据库层面的锁机制。
缺点:数据库性能消耗非常大。
在一般的系统中,采用乐观锁。
相关文章推荐
- 【项目】——ORACLE数据库中ROWNUM应用
- SQL语句
- 利用Shell脚本将MySQL表中的数据转化为json格式
- 管理数据库和表
- Mysql 会导致锁表的语法
- ORACLE数据库多表关联查询效率问题解决方案
- 恢复MySQL主从数据一致性的总结
- 临时表
- 游标取数据库数据在swing下table中显示
- 没有找到libmysql.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题
- navgicat for MySQL不联网不能连接MySQL
- ORACLE 11G 导出空表 EXP 导出
- 数据库中批量授权与回收权限
- oracle 表锁死的解决方法
- 在Hibernate工程中如何让数据库从MYSQL换成ORACLE
- mysql 数据表中查找、删除重复记录
- 纵论数据库安全审计产品的三代演进
- Hibernate执行原生态sql语句
- mysql 性能小记
- postgresql 优化之--不会使用索引