MySQL 锁
锁的类型
- 行锁
粒度最小的锁,存在死锁。 - 页锁
粒度在行锁和表锁之间的锁。 - 表锁
粒度较大的锁,不存在死锁。
行锁的类型
- 共享锁
允许事物读一行的数据 - 排他锁
允许事物删除或者更新一行数据
意向锁类型
- 意向共享锁
事物想要获得一张表中某几行的共享锁 - 意向排它锁
事物想要获得一张表中某几行的排它锁
一致性非锁定读
在innodb存储引擎下,通过多版本控制的方式来读取当前执行时间数据中的数据。如果读取的行正在执行delete,update操作,这个时候的读操作也不会等待锁的释放,相反的,innodb引擎回去读取行的一个快照数据。
行锁的三种算法
- Record Lock 单行记录上锁
- Gap Lock 间隙锁,锁定一个范围,不包含记录本身
- Next-Key Lock (Gap Lock + Record Lock)也就是这个范围还包含本身