innodb的记录锁、gap锁、next-key锁
2014-11-19 16:35
423 查看
innodb的记录锁、gap锁、next-key锁
分类:数据库2010-06-06 18:491144人阅读评论(0)收藏举报
deleteinsert
相关文章见:
http://dev.mysql.com/doc/refman/5.0/en/innodb-record-level-locks.html
http://hi.baidu.com/fishhust/blog/item/c4900b8bff4a2e1bc8fc7a81.html
http://dev.mysql.com/doc/refman/5.0/en/innodb-next-key-locking.html
对文章的总结如下:
(1)记录锁:在行相应的索引记录上的锁
(2)gap锁:是在索引记录间歇上的锁
(3)next-key锁:是记录锁和在此索引记录之前的gap上的锁的结合
(4)innodb行锁的加锁方式: 当根据innodb表的索引搜索时, 设置共享锁和排它锁在索引记录上
(5)行锁实际上是索引锁
(6)innodb_locks_unsafe_for_binlog:
当为0时 (disabled), 这个开启了gap锁;设置为1,关闭gap锁(这会导致幻读,引起主从同步不一致)。例子见http://book.51cto.com/art/200803/68129.htm
(7)开启这个选项innodb_locks_unsafe_for_binlog并不关闭gap锁在外键检查方面的作用
(8)在UPDATE和DELETE时,innodb首先对遇到的每一行加行锁;如果innodb_locks_unsafe_for_binlog开启,那么不匹配的行上的锁将被释放;如果未开启,不匹配的行上的锁也不释放,直到事务结束
(9)即使innodb表上没有索引,也会使用内部的clustered index来进行锁定;
(10)innodb除主键的索引之外的其他索引和clustered index在内部是建立一张索引对应表;当利用其他索引扫描记录时,对其他索引加的锁最后都转换为对clustered index加的锁
(11)在UPDATE模式下,对检索中遇到的记录加排它锁;在INSERT...SELECT模式下,对检索中遇到的记录加共享锁;在INSERT模式下,对检索中遇到的记录加排它锁;在DELETE模式下,对检索中遇到的记录加排它锁
(12)在使用unique index进行搜索,并且只返回一行时,不使用gap锁
(13)next-key锁举例:假设索引包括10,11,13,20,则next-key锁为:(negative infinity, 10],(10, 11],(11, 13],(13, 20],(20, positive infinity)
(14)使用next-key锁可以预防幻读
(15)gap锁在read_committed下或当innodb_locks_unsafe_for_binlog=on时被关闭;当在这种情况下时,不匹配的行上的锁将被释放
相关文章推荐
- innodb的记录锁、gap锁、next-key锁
- 推荐:mysql锁 innodb下的记录锁,间隙锁,next-key锁
- Mysql加锁过程详解(9)-innodb下的记录锁,间隙锁,next-key锁
- 理解innodb的锁(record,gap,Next-Key lock)
- 理解innodb的锁(record,gap,Next-Key lock)
- Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)
- MYSQL锁之InnoDB record,gap and next-key locks
- innodb下的记录锁,间隙锁,next-key锁
- MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
- Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)
- 详谈innodb的锁(record,gap,Next-Key lock)
- MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
- InnoDB: The InnoDB memory heap is disabled报错记录
- MySQL源码:深度解析Innodb记录格式源码
- 注意InnoDB的记录长度,控制Blob字段的数量
- innodb如何处理对innodb行记录的update
- Mysql更换MyISAM存储引擎为Innodb的操作记录总结
- 复习记录:mysql innodb 外键约束
- 14.2.2.4 InnoDB Record, Gap, and Next-Key Locks
- InnoDB记录结构浅析