mysql 锁实现

MySQL锁实现主要通过共享锁(S锁)和排他锁(X锁)来实现,用于保护数据并发访问的一致性。

MySQL锁实现主要有以下几种类型:

1、表级锁(Table Lock)

mysql 锁实现

2、行级锁(Row Lock)

3、页级锁(Page Lock)

4、间隙锁(Gap Lock)

5、意向锁(Intention Lock)

下面分别详细介绍这些锁的实现方式和作用:

mysql 锁实现

表级锁(Table Lock)

表级锁是MySQL中最基本的锁策略,它会锁定整张表,粒度较大,在执行对表的CRUD操作时,会自动加上表级锁,当对表进行写操作时,会锁定整张表,其他线程无法对该表进行读写操作;当对表进行读操作时,也会锁定整张表,但允许其他线程进行读操作。

行级锁(Row Lock)

行级锁是在执行对表中某行数据的CRUD操作时,自动加上的锁,行级锁的粒度较小,只锁定涉及到的数据行,当对某行数据进行写操作时,会锁定该行数据,其他线程无法对该行数据进行读写操作;当对某行数据进行读操作时,也会锁定该行数据,但允许其他线程进行读操作。

页级锁(Page Lock)

页级锁是在执行对表中某页数据的CRUD操作时,自动加上的锁,页级锁的粒度介于表级锁和行级锁之间,会锁定一页或多页数据,当对某页数据进行写操作时,会锁定该页数据,其他线程无法对该页数据进行读写操作;当对某页数据进行读操作时,也会锁定该页数据,但允许其他线程进行读操作。

间隙锁(Gap Lock)

间隙锁是在执行对表中某些间隔范围的数据进行批量修改操作时,自动加上的锁,间隙锁的主要作用是防止其他事务在该间隔范围内插入新的数据,当对某个间隔范围的数据进行批量修改操作时,会锁定该间隔范围内的所有数据行,同时还会加上间隙锁,防止其他事务在该间隔范围内插入新的数据。

意向锁(Intention Lock)

意向锁是一种比较特殊的锁策略,它不会阻止其他事务对数据进行访问,而是表明了事务的意愿,主要有以下两种意向锁:

mysql 锁实现

1、意向共享锁(Intent Share Lock):表示事务想要获取表中某部分数据的共享锁,当事务请求共享锁时,会自动加上意向共享锁。

2、意向排他锁(Intent Exclusive Lock):表示事务想要获取表中某部分数据的排他锁,当事务请求排他锁时,会自动加上意向排他锁。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/639554.html

(0)
未希的头像未希新媒体运营
上一篇 2024-05-21 04:06
下一篇 2024-05-21 04:08

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入