InnoDB中锁的类型

Shared and Exclusive Locks(共享锁和排他锁)
  1. 共享锁(S)允许持有锁的事务读取一行
  2. 排他锁(X)允许持有锁的事务更新或者删除行
  3. 锁的特点
如果事务T1在行r持有共享锁,
事务T2如果获取行r的共享锁,可以立即获得(T1和T2同时持有行r的共享锁);
事务T2如果获取行r的排他锁,不能立即获得。

如果事务T1在行r持有排他锁,事务T2在行r获取任何锁都不能立即获得,必须等待T1释放锁。
Intention Locks(意向锁 )
  1. 意向共享锁(IS)表示事务打算对表中的各个行设置共享锁
  2. 意向排他锁(IX)表示事务打算对表中的各个行设置排他锁
  3. 锁的协议
在事务可以获取表中某行的共享锁之前,它必须首先获取该表中的IS锁或更强的锁

在事务可以获取表中某行的排它锁之前,它必须首先获取该表中的IX锁
Record Locks(记录锁)
  1. 记录锁定是对索引记录的锁定SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE;
  2. 记录锁始终锁定索引记录,即使没有定义索引的表也是如此。 对于这种情况,InnoDB创建一个隐藏的聚集索引,并将该索引用于记录锁定。
Gap Locks (间隙锁)
  1. 间隙锁定是对索引记录之间的间隙的锁定,或者是对第一个或最后一个索引记录之前的间隙的锁定
  2. 间隙可能跨越单个索引值,多个索引值,甚至为空
  3. 间隙锁定可以显式禁用。 如果将事务隔离级别更改为“已读”(READ COMMITTED)
Next-Key Locks(下一键锁)
  1. 下一键锁定是索引记录上的记录锁定和索引记录之前的间隙上的间隙锁定的组合。
Insert Intention Locks(插入意图锁)
  1. 插入意图锁是一种在行插入之前通过INSERT操作设置的间隙锁。
AUTO-INC Locks(自动上锁)
  1. AUTO-INC锁是一种特殊的表级锁,由事务插入具有AUTO_INCREMENT列的表中获得
Predicate Locks for Spatial Indexes(空间索引)
  1. InnoDB支持对包含空间列的列进行空间索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值