Mysql学习笔记(一):锁类型介绍

以下内容主要参考Mysql官方文档整理

MySQL server的锁主要是全局锁,行锁和表锁,通过存储引擎则可以实现不同的锁机制

MyISAM只支持到表级锁,因为MyISAM的索引与数据是分离的,其索引存储的是数据的物理地址,通过索引无法找到数据,就只能把整个表锁起来

innoDB的锁模型:

  • 行级别的共享(s)与独占锁(x):s锁之间不互斥,s锁与x锁互斥,x锁之间互斥

  • 意向锁:分为意向共享锁(IS)和意向独占锁(IX),表级锁。在事务获取表中的s锁之前需要先获得IS锁或者更强级别的锁;在事务获取表中的x锁之前需要先获得IX锁,参考。表级锁的互斥关系如下:

        

  • 记录锁:索引记录上的锁,防止对行记录的增删改

  • 间隙锁:在两行索引记录间的锁,或者在第一行记录之前范围的锁,又或者是最后一行记录之后的范围的锁。用于特定隔离级别如RR级别。产生间隙锁的条件:

    (1) 使用非唯一索引查询单条记录,锁住前面的间隙

    (2) 使用多列唯一索引,锁住中间的间隙

    (3) 唯一索引锁住多行记录

    更多理解请参考

  • Next-Key Locks:其实就是记录锁+间隙锁,注意是一个前开后闭的区间。

    关于next-key lock的相关规则参考

  • 其他锁比较特殊,不赘述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值