mysql行锁/表锁

1.行锁

1.1 读锁也叫共享锁/S锁/读锁

    加锁方式:
        1. insert into student select * from student1 表备份的时候 
        2. select * from student lock in share mode 手动sql语句加锁

1.2. 排他锁/写锁/X锁/独占锁

    x锁允许持有锁的事务更新或删除行。
    update/delete/select * from table for update;
    数据行被事务添加x锁后,其他事务不能再为改行的数据添加任意类型的锁。
    
    除了读锁之外,写锁是innoDB引擎级的,实现方式为间隙锁。在修改数据时,会首先加间隙锁,如果修改条件有范围或者不是根据索引(**包括普通索引**)修改,间隙锁会结合next-key锁定多行记录。
    
    在插入数据时,会添加插入意向锁在事务未提交的情况下,如果另外的事务来修改数据,则根据修改条件,如果有使用唯一索引则直接修改,否则需要等插入事务提交,意向锁释放才可以修改数据。
    
    间隙锁:是对索引间隙之间的间隙的锁定。使用特殊唯一字段查询数据不使用间隙锁。
    具体的表现形式为next-key.

加读锁则不能添加写锁
间隙锁只存在于特定的隔离级别中,读已提交中间隙锁会自动失效

2.表锁

2.1 MDL元数据锁

在这里插入图片描述
数据库服务器层的锁

2.2 innoDB层的表锁

在这里插入图片描述

2.3 自增锁

以sql为单位,每执行一条自动生成一个id.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值