博客已迁移至https://drivingc.com,本站停止更新.

乐观锁与悲观锁

乐观锁

假设提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。

例子:
数据库管理系统修改某条数据,提交的时候有时会阻止提交,这是因为有其他程序已经修改了这条数据。

  1. 读取数据
  2. 修改前判断该数据是否被其他程序修改
  3. 修改数据

乐观锁应用于数据竞争不大的情况,偶尔回滚事务的成本会低于读取数据时锁定数据的成本。

悲观锁

如果一个事务执行的操作读某行数据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作。

  1. 读取数据并上锁
  2. 修改数据
  3. 释放锁
本文链接:https://kupposhadow.com/p/59ed5563e717c501f43610ea
本站采用「署名 4.0 国际(CC BY 4.0)」创作共享协议。只要在使用时署名,那么使用者可以对本站所有原创内容进行转载、二次创作、商业性使用。
这篇文章还没有评论