数据库的乐观锁和悲观锁

来源:互联网 发布:梦幻花园无法加载 网络 编辑:程序博客网 时间:2024/04/30 21:02

前两天遇到一个数据库并发的问题,查询资料以后大致发现有两种机制可以解决

乐观锁


根据名字就可以看出,表现出大胆乐观的态度,主要的引入方法分为两种

1.版本号控制

在数据库中添加 versions 字段,先对于数据进行查询,若此时的版本为1,每次进行数据库操作的时候自增1,在进行数据库更新的时候再次查询该主键的版本号,若不为1,则返回

2.添加时间戳

其实和第一种方法类似

乐观锁的机制和svn的版本号是类似的,如果需要更新的与当前版本号不一致则产生冲突


悲观锁

顾名思义,在进行每一次数据库操作的时候都进行了锁表或者锁行的方法,如果枷锁失败,则说明该记录正在被修改,则当前查询排队或者抛出异常,如果成功加锁,则可以对该条记录进行修改,等事物完成以后进行解锁


0 0