美文网首页技术干货
Innodb 共享锁 排他锁 及应用

Innodb 共享锁 排他锁 及应用

作者: 剑指TOP | 来源:发表于2019-05-11 13:39 被阅读0次

MySQL版本:5.6

注意点:
  • 单纯的 SELECT 不会加锁,INSERT UPDATE DELETE 默认加 X 。
  • 文中的读都不是单纯 SELECT ,单纯的 SELECT 任何时候都可以进行。

共享锁 shared(S) lock

定义:A shared (S) lock permits the transaction that holds the lock to read a row.
事务 T1 获取了数据行 r 的共享锁,事务 T2 依然能获得 r 的共享锁,但不能获得排他锁。

说人话:我可以读,你也可以读。 但是你不能改(如果没有其他人读我可以偷偷改)。

锁级别:Row Lock 行级别

加锁方式:SELECT ... LOCK IN SHARE MODE

排它锁 exclusive(X) lock

定义:An exclusive (X) lock permits the transaction that holds the lock to update or delete a row.
事务 T1 获取了数据行 r 的排他锁,T2 既不能获得 r 的共享锁也不能获得 r 的排他锁。

说人话:我在干活,你不能读写。

锁级别:Row Lock 行级别

加锁方式:SELECT ... FOR UPDATE

业务应用(重要):

大家看完上面的定义可能有点枯燥,难以理解,我们举一点实际的例子。

排他锁很好理解,比如修改银行卡余额,现在是 100,我要给他扣20,我不先给锁上,那别人也拿着 100 去扣个 30,整个余额就乱了。但是我先锁上了,别人就读不到 100,只能等我改完,然后读到 80 再去减 30。

那么什么时候需要用到共享锁呢,有人说我直接用排他锁不就行了么。
比如盘点库存,我需要在我盘点货物的时候,别人不能进出库,否则盘点的数据就不准确了,而我自己只需要读不需要修改库存。这时候就需要用到共享锁了,为什么不用排他锁呢,理论业务上来说,我在盘点,那我的合伙人也能盘点,不能说我在盘点,就不让别人盘点吧。
所以共享锁真正的使用场景是大家都要读,但是不让其他人写。

上文说过,如果没有其他人同时加共享锁,我就能偷偷改。为什么叫做偷偷呢,如果别人也加了共享锁,你就改不了了,所以这叫做偷偷。至于为什么我能修改,其实本质上是我吧共享锁升级成为了排他锁,这是允许的。

下一篇再讲 意向共享锁和意向排他锁
如果有错误遗漏欢迎指正。

相关文章

  • 校招面试题mysql锁总结

    目录 锁定义 锁分类 读锁和写锁 表锁和行锁 InnoDB共享锁和排他锁 InnoDB意向锁和排他锁 InnoDB...

  • Innodb 共享锁 排他锁 及应用

    MySQL版本:5.6 注意点: 单纯的 SELECT 不会加锁,INSERT UPDATE DELETE 默认加...

  • Mysql innodb 面试要点记录(二)锁

    1.innodb 的锁分类 列粒度锁:S 共享锁 X 排他锁 意向锁:IS 意向共享锁 IX 意向排他锁 1.1....

  • Innodb锁(一)

    共享和排他锁(shard and Exclusive Locks) Innodb 支持标准的行级共享和排他锁。 共...

  • Mysql中的锁

    锁的类型有哪些 基于锁的属性分类:共享锁、排他锁。 基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB...

  • InnoDB行锁

    十、 InnoDB行锁0、 查看方式1、 共享锁2、 排他锁3、 意向锁4、行锁案列5、InnoDB锁实现 0、 ...

  • MySQL-InnoDB行锁

    InnoDB的锁类型 InnoDB存储引擎支持行锁,锁类型有两种: 共享锁(S锁) 排他锁(X锁) S和S不互斥,...

  • InnoDB锁类型和使用「译」

    InnoDB锁类型 InnoDB引擎使用了八种类型的锁,他们分别是: 共享排他锁(Shared and Exclu...

  • InnoDB锁定

    1. 不同的锁类型 (1) 共享锁和排他锁Innodb 实现标准的行级锁定,其中有两种类型的锁:共享(S)锁和排他...

  • mysql innodb行锁

    在mysql innodb中的行锁分为共享锁和排他锁 共享锁: 名词解释:共享锁又叫做读锁,所有的事务只能对其进行...

网友评论

    本文标题:Innodb 共享锁 排他锁 及应用

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