数据库中的三种锁
- record锁(行锁)
- gap锁(间隙锁)(左开右开)
- next-lock锁(行+间隙)(左开右闭)
注意,锁的区间不是任意的,是依托于索引的键的.相当于说锁和非叶子节点的指针一对一的
A record lock is a lock on an index record. For example,
SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE;
prevents any other transaction from inserting, updating, or deleting rows where the value oft.c1
is10
.
细节
首先明确,当通过索引查找数据时,innodb默认的方式是next-key lock.
但是如果不走索引,则是按页来锁数据的