文章目录加载中

数据隔离-锁机制

# 乐观锁

乐观锁认为一般情况下数据不会造成冲突(所以叫“乐观”),所以在数据进行提交更新时才会对数据的冲突与否进行检测。

它本身是种程序设计思想,通过一种标识来决定数据是否可以操作

现在普遍的做法是给数据加一个版本号或者时间戳的方式来实现乐观锁操作过程。例如新增一个 version 字段,更新的时候:

UPDATE ... SET version=version+1 WHERE version=version

# 悲观锁

悲观锁获取数据都会认为数据可能被修改。在获取数据的时候会加锁,确保使用过程不会被修改。

也是程序设计的思想。例如线程读写数据加锁,其他线程等待锁释放,才可以操作数据。

# 异同点

  1. 都是程序设计的思想,通过数据库字段/代码层面来控制,并非数据库自身的锁
  2. 乐观锁适合读频繁场景;悲观锁适合写频繁场景。

# 参考链接

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog