锁有不同的分类标准,可以分为以下:
从粒度上来看,innodb只有表锁和行锁
myisam不支持行锁
共享锁和排他锁(s锁和x锁,读锁和写锁,都是一个意思)
用来读数据,其他事务也可也读到,但不允许修改,多个共享锁可以共存
什么是意向锁
数据引擎维护,是为了避免用于判断没有其他事务锁住行时,还要使用全表扫描
锁住的不是---不是一行数据,不是一个字段,也不是一列
而是锁住的是索引
行锁算法:
记录,间隙,临键
当索引搜索不到任何数据时,锁住的是间隙(间隙锁用于防止在该范围插入数据)
事务隔离级别对锁的使用:
innodb如何在可重复读事务隔离级别避免幻读
RC--提交读
RR--可重复读
可重复读时:锁住了间隙锁,防止插入