MySQL锁实现主要有以下几种类型:
1、表级锁(Table Lock)
2、行级锁(Row Lock)
3、页级锁(Page Lock)
4、间隙锁(Gap Lock)
5、意向锁(Intention Lock)
下面分别详细介绍这些锁的实现方式和作用:
表级锁(Table Lock)
表级锁是MySQL中最基本的锁策略,它会锁定整张表,粒度较大,在执行对表的CRUD操作时,会自动加上表级锁,当对表进行写操作时,会锁定整张表,其他线程无法对该表进行读写操作;当对表进行读操作时,也会锁定整张表,但允许其他线程进行读操作。
行级锁(Row Lock)
行级锁是在执行对表中某行数据的CRUD操作时,自动加上的锁,行级锁的粒度较小,只锁定涉及到的数据行,当对某行数据进行写操作时,会锁定该行数据,其他线程无法对该行数据进行读写操作;当对某行数据进行读操作时,也会锁定该行数据,但允许其他线程进行读操作。
页级锁(Page Lock)
页级锁是在执行对表中某页数据的CRUD操作时,自动加上的锁,页级锁的粒度介于表级锁和行级锁之间,会锁定一页或多页数据,当对某页数据进行写操作时,会锁定该页数据,其他线程无法对该页数据进行读写操作;当对某页数据进行读操作时,也会锁定该页数据,但允许其他线程进行读操作。
间隙锁(Gap Lock)
间隙锁是在执行对表中某些间隔范围的数据进行批量修改操作时,自动加上的锁,间隙锁的主要作用是防止其他事务在该间隔范围内插入新的数据,当对某个间隔范围的数据进行批量修改操作时,会锁定该间隔范围内的所有数据行,同时还会加上间隙锁,防止其他事务在该间隔范围内插入新的数据。
意向锁(Intention Lock)
意向锁是一种比较特殊的锁策略,它不会阻止其他事务对数据进行访问,而是表明了事务的意愿,主要有以下两种意向锁:
1、意向共享锁(Intent Share Lock):表示事务想要获取表中某部分数据的共享锁,当事务请求共享锁时,会自动加上意向共享锁。
2、意向排他锁(Intent Exclusive Lock):表示事务想要获取表中某部分数据的排他锁,当事务请求排他锁时,会自动加上意向排他锁。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/639554.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复