MySQL锁汇总

一、Innodb引擎

描述
X 表、行 排他锁,与所有其他锁互斥(select .. for update; update; delete;)
S 表、行 共享锁,可并发,仅与排他锁互斥(select .. lock in share mode;)
IX 意向排他锁,表标志位,方便DDL和DML加锁;仅与排他锁、共享锁互斥(select .. for update; update)
IS 意向排他锁,表标志位,方便DDL和DML加锁;仅与排他锁互斥(select .. lock in share mode;)
记录锁 行锁 select ... lock in share mode; select ... for update; update; delete
间隙锁 范围锁(左开右开);隔离级别为可重复读 select ... where id > 1 and id < 5 lock in share mode
select ... where id > 1 and id < 5 for update
Next-key lock 范围锁(左开右闭);隔离级别为可重复读 select ... where id > 1 and id < 5 lock in share mode
select ... where id > 1 and id < 5 for update
意向插入锁(IX) 仅记录当前有插入请求,正在等待锁释放
insert....
MDL MetaData lock
DDL操作锁表
alter table...
谓词锁 空间锁 地理空间(未知)

二、杂项
1、并发修改不同行,不用等待锁。这是因为加锁成功 flag=(IX1 & IX2)&(X1 & X2)= true . 在这里IX为表锁,X为行锁;单如果X为表锁就不行了。

posted @ 2022-04-22 11:58  SArtOnline  阅读(27)  评论(0)    收藏  举报