美文网首页
mysql共享锁、排它锁、乐观锁的使用场所

mysql共享锁、排它锁、乐观锁的使用场所

作者: 江江的大猪 | 来源:发表于2020-10-30 19:29 被阅读0次

共享锁

  • 主表和子表的情景,当插入子表的时候防止主表被删除,造成插入的字表没有对应的主表。该场景使用排它锁在并发插入子表的时候会变成串行操作,效率低
begin //开启事务
select 1 from 主表 where id=xxx lock in share mode //锁住主表的一条数据
insert 子表 //插入字表
commit
begin //开启事务
delete from 主表 where id=xxx
delete from 子表 where 关联id=xxx
commit
  • 读取时如果有还未提交的更新,需要阻塞直到读取到最新的数据(实际没遇到这种场景,直接读取就可以,读取到最近已经提交事务的数据)

排它锁

  • 更新数据的值依赖当前值。该场景使用共享锁当两个事务操作同一条数据时有死锁问题
begin
select * from table where id=xxx for update
根据查询的值处理得到要更新的值
update set xxx where id=xxx
commit

乐观锁

  • 类似cas
select value from table where id=xxx
根据value处理得到新值
update set value=新值 where id=xxx and value=旧值

相关文章

  • mysql共享锁、排它锁、乐观锁的使用场所

    共享锁 主表和子表的情景,当插入子表的时候防止主表被删除,造成插入的字表没有对应的主表。该场景使用排它锁在并发插入...

  • MySQL的锁机制和加锁原理

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

  • mysql死锁

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

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

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

  • mysql 的S 锁和X锁的区别

    Mysql的锁系统 Shared lock 和 exclusive lock(共享锁和排它锁,也就是读锁和写锁,即...

  • 数据库的一些锁

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

  • 你应该知道的

    本次更新:20180319一、Mysql:1.S锁(共享锁)、X锁(排它锁):select语句默认加S锁;2.聚簇...

  • MS汇总

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

  • MySQL-浅析间隙锁

    MySQL 锁有哪些从类型上来看,可以分为共享锁、排它锁从范围来看,可以分为表锁、行锁,间隙锁、页锁等。其中表锁中...

  • mysql X锁和S锁

    mysql X锁和S锁基本的封锁类型有两种: 排它锁(X锁)和共享锁(S锁): 所谓X锁,是事务T对数据A加上X锁...

网友评论

      本文标题:mysql共享锁、排它锁、乐观锁的使用场所

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