云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

Innodb有哪些锁,都能干什么(innodb auto increment 锁)

jxf315 2025-07-01 20:48:44 教程文章 4 ℃

Innodb有哪些锁,都能干什么


InnoDB存储引擎支持多种类型的锁,包括共享锁、排他锁、意向锁、间隙锁、记录锁、临键锁、插入意向锁和自增锁。这些锁的作用如下:


1. 共享锁(S锁):又称为读锁,允许多个事务同时读取同一行数据,但不允许任何事务修改该行数据。如果一个事务对某一行数据加上了共享锁,其他事务只能再对该行数据加共享锁,而不能加排他锁。


2. 排他锁(X锁):又称为写锁,只允许一个事务对某一行数据进行修改,其他事务不能对该行数据加任何类型的锁。


3. 意向锁(IS锁和IX锁):用于在行级锁和表级锁之间进行转换。IS锁表示一个事务想要在某一行数据上加共享锁,IX锁表示一个事务想要在某一行数据上加排他锁。


4. 间隙锁(Gap锁):用于防止其他事务在一个范围内插入新的行数据。如果一个事务对某一范围内的行数据加上了间隙锁,其他事务不能在该范围内插入新的行数据。


5. 记录锁(Record锁):用于保护单个行数据,如果一个事务对某一行数据加上了记录锁,其他事务不能对该行数据加排他锁或间隙锁。


6. 临键锁(Next-Key锁):是记录锁和间隙锁的组合,用于保护一个范围内的行数据。如果一个事务对某一范围内的行数据加上了临键锁,其他事务不能在该范围内插入新的行数据。


7. 插入意向锁(Insert Intention锁):用于在插入新行之前,保证其他事务不能在同一范围内插入新的行数据。


8. 自增锁(Auto-Increment锁):用于保证在插入新行时,自增列的值是唯一的。


这些锁的作用不同,可以保证数据的一致性和并发性。

间隙锁和临键锁所说的数据范围是指索引数据。

比如列c,创建索引,现在把x>100的索引给加锁了,则新增x>100的行失败。

最近发表
标签列表