这个是db级的锁(术语叫悲观锁,再术语叫排它锁),事务结束(提交、回滚或者链接断开)之后自行释放。
如何加的锁?
select .... for update
注意: 这种方式的锁必须使用在事务的上下文当中。
事务呢?
如果是纯SQL会话,那么就是数据库的原语(即首先set autocommit=0,然后begin,然后执行几条sql命令,然后commit);
如果是上层用的ORM(比如hibernate)以及Spring,那么就用Spring的@Transactional注解实现整个事务的逻辑,隔离级别设置为RC(即不可重复读,Read_Commit)。
扩容流程为什么要加锁?
为了并发控制。
网友评论