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为表锁就不行了。
本文来自博客园,作者:SArtOnline,转载请注明原文链接:https://www.cnblogs.com/sartonline/p/16178287.html
浙公网安备 33010602011771号