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

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

作者: 林万程 | 来源:发表于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

死锁

死锁条件

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

死锁避免

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

相关文章

  • 数据库的一些锁

    数据库锁的种类包括: ==行锁、表锁、共享锁、排它锁、乐观锁、悲观锁== 按照锁粒度划分,可以将锁划分成 行锁? ...

  • 数据库相关问题与解答

    收集常见数据库问题 锁机制介绍:行锁、表锁、排他锁、共享锁,悲观锁、乐观锁。行级锁:开销大,加锁慢;会出现死锁;锁...

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

    概念 可重入 获得锁的程序因为断网等原因离开后可以重入 锁的实现 1 乐观锁 通过版本字段手动实现,适用写少的场景...

  • MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)

    这几个锁按照属性可分为:乐观锁、悲观锁(共享锁,排他锁),行锁、表锁指的是锁粒度。 乐观锁乐观锁就是很乐观的认为,...

  • 乐观锁与悲观锁——解决并发问题

    这几个锁按照属性可分为:乐观锁、悲观锁(共享锁,排他锁),行锁、表锁指的是锁粒度。 乐观锁乐观锁就是很乐观的认为,...

  • rails中乐观锁和悲观锁的使用

    MySQL乐观锁和悲观锁的介绍可以参考之前的一篇文章MySQL中的锁(行锁,表锁,乐观锁,悲观锁,共享锁,排他锁)...

  • MySQL的锁机制和加锁原理

    首先对mysql锁进行划分: 按照锁的粒度划分:行锁、表锁、页锁 按照锁的使用方式划分:共享锁、排它锁(悲观锁的一...

  • mysql死锁

    首先对mysql锁进行划分:按照锁的粒度划分:行锁、表锁、页锁按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

  • mysql锁

    mysql锁 性能:乐观锁,悲观锁 操作类型:读锁,写锁,都属于悲观锁 操作粒度:行锁,表锁 乐观锁:一种思想,通...

网友评论

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

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