MySQL知识点之InnoDB中的行级锁
本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于InnoDB中的行级锁的相关知识,行锁,也称为记录锁,顾名思义就是在记录上加的锁,下面一起来看一下,希望对大家有帮
本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于InnoDB中的行级锁的相关知识,行锁,也称为记录锁,顾名思义就是在记录上加的锁,下面一起来看一下,希望对大家有帮助。
行锁,也称为记录锁,顾名思义就是在记录上加的锁。但是要注意,这个记录指的是通过给索引上的索引项加锁。InnoDB 这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。
不论是使用主键索引、唯一索引或普通索引,InnoDB都会使用行锁来对数据加锁。
只有执行计划真正使用了索引,才能使用行锁:即便在条件中使用了索引字段,但是否使用索引来检索数据是由MySQL 通过判断不同执行计划的代价来决定的,如果MySQL认为全表扫描效率更高,比如对一些很小的表,它就不会使用索引,这种情况下InnoDB将使用表锁,而不是行锁。
同时当我们用范围条件而不是相等条件检索数据,并请求锁时,InnoDB会给符合条件的已有数据记录的索引项加锁。
不过即使是行锁,InnoDB里也是分成了各种类型的。换句话说即使对同一条记录加行锁,如果类型不同,起到的功效也是不同的。
这里我们还是使用前面的teacher表,增加一个索引,并插入几条记录。