美文网首页
简单说明乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁

简单说明乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁

作者: 林万程 | 来源:发表于2018-12-10 07:18 被阅读31次

    概念

    可重入

    获得锁的程序因为断网等原因离开后可以重入

    锁的实现

    1 乐观锁

    通过版本字段手动实现,适用写少的场景
    写多的冲突多了不断重试反倒低性能
    冲突率<20%时使用,重试次数>=3
    update …
    set … version=version+1
    where id=#{id} and version=#{version};

    2 悲观锁

    无版本字段,其他可读不可改,分两种

    2.1 共享锁

    其他共享锁可以SELECT进来
    SELECT … lock in share mode;

    2.2 排他锁

    共享锁悲观锁都不能SELECT进来
    SELECT … for update;
    分两种

    2.2.1 行锁

    使用索引
    exists
    SELECT … FORCE INDEX WHERE …

    2.2.2 表锁

    全表扫描
    in

    死锁

    死锁条件

    互斥排他
    保持着排他资源又提出新资源请求
    不可剥夺
    环路

    死锁避免

    同顺序
    一次性锁定
    细粒度锁定(行锁)

    相关文章

      网友评论

          本文标题:简单说明乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁

          本文链接:https://www.haomeiwen.com/subject/rqwlhqtx.html