为什么加锁
在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。
加锁的目的是在同一个时间只有一个事务在更新数据,通过锁独占数据的修改权。
乐观锁前提是假设可能会发生并发抢占资源,只有在提交操作的时候要检查是否违反数据完整性
(悲观锁即是假设一定会有并发抢占资源,强行独占资源,在整个数据处理过程中,将数据处于锁定状态。)
实现方式:
通过增加version字段
通过增加时间戳字段
具体实现(以第二种方式为例)
前提条件我有一个 CREATE_TIME 或者 MODIFY_TIME。
每次update时,首先取出该条记录的MODIFY_TIME作为where中的判断条件
UPDATE
User
SET
User.IS_MAN = 1
User.MODIFY_TIME = NOW()
WHERE
User.id = 'F53BB908206A'
User.MODIFY_TIME = "2019-09-30 13:02:27"
version字段即为每次update时
set version = version + 1
网友评论