美文网首页MySQL锁首页推荐程序员
mysql锁(八)innodb下的共享锁和排他锁

mysql锁(八)innodb下的共享锁和排他锁

作者: b12af9baadf4 | 来源:发表于2016-09-14 17:20 被阅读2620次

****什么是共享锁,什么是排他锁?****

****共享锁****也叫读锁,简称S锁,原理:一个事务获取了一个数据行的共享锁,其他事务能获得该行对应的共享锁,但不能获得排他锁,即一个事务在读取一个数据行的时候,其他事务也可以读,但不能对该数据行进行增删改。

****排他锁****也叫写锁,简称x锁,原理:一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁(排他锁或者共享锁),即一个事务在读取一个数据行的时候,其他事务不能对该数据行进行增删改查。


****如何设置共享锁和排他锁?****
设置共享锁:SELECT ... LOCK IN SHARE MODE;
设置排他锁:SELECT ... FOR UPDATE;


****注意点 ****

  • 对于select 语句,innodb不会加任何锁,也就是可以多个并发去进行select的操作,不会有任何的锁冲突,因为根本没有锁。
  • 对于insert,update,delete操作,innodb会自动给涉及到的数据加排他锁,只有查询select需要我们手动设置排他锁。

****什么是意向共享锁,什么是意向排他锁?****
意向共享锁,简称IS,其作用在于:通知数据库接下来需要施加什么锁并对表加锁。如果需要对记录A加共享锁,那么此时innodb会先找到这张表,对该表加意向共享锁之后,再对记录A添加共享锁。

意向排他锁,简称IX,其作用在于:通知数据库接下来需要施加什么锁并对表加锁。如果需要对记录A加排他锁,那么此时innodb会先找到这张表,对该表加意向排他锁之后,再对记录A添加共享锁。


****共享锁和意向共享锁,排他锁与意向排他锁的区别****

  • 共享锁和排他锁,系统在特定的条件下会自动添加共享锁或者排他锁,也可以手动添加共享锁或者排他锁。
    意向共享锁和意向排他锁都是系统自动添加和自动释放的,整个过程无需人工干预。

  • 共享锁和排他锁都是锁的行记录,意向共享锁和意向排他锁锁定的是表。


相关文章

  • 校招面试题mysql锁总结

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

  • mysql innodb行锁

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

  • Innodb锁(一)

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

  • mysql锁(八)innodb下的共享锁和排他锁

    ****什么是共享锁,什么是排他锁?**** ****共享锁****也叫读锁,简称S锁,原理:一个事务获取了一个数...

  • InnoDB锁类型和使用「译」

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

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

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

  • MySQL-InnoDB行锁

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

  • InnoDB锁定

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

  • Mysql InnoDB锁 排他锁 共享锁

  • 2021-01-26

    4、MySQL锁类型? 根据锁的类型分,可以分为共享锁,排他锁,意向共享锁和意向排他锁。 根据锁的粒度分,又可以分...

网友评论

  • 程序员小默:排他锁也叫写锁,简称x锁,原理:一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁(排他锁或者共享锁),即一个事务在读取一个数据行的时候,其他事务不能对该数据行进行增删改查。 ←这里不对,可以查,不能修改和删除。
    君子世无双:@渡边一郎 可以查,但不允许加锁查。另外说说【脏读】,首先只有在事物隔离级别为Read uncommitted时才会出现,其次该数据在被加锁的情况下,其他事物无法对该数据进行修改和删除操作,所以不存在【脏读】。
    f47666c03869:你理解错了。
    排它锁与排它锁、共享锁都不兼容,而且此时能够查询的话就是允许“脏读”了啊,显然错误。

本文标题:mysql锁(八)innodb下的共享锁和排他锁

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