当前位置: 首页 > 网络应用技术

MySQL8 RC隔离级记录锁,间隙锁,下一个钥匙锁实验3和摘要

时间:2023-03-07 19:52:36 网络应用技术

  由于在RR隔离水平下锁定后,通过锁定实现了隔离水平的实现,我们需要分析另一个常用的RC

  首先,您需要将数据库的全局隔离级别设置为RC

  5.1.1存在价值等价查询我们启动一个新连接以执行以下SQL

  查询结果是:

  5.1.2值等于值的值?

  此时的锁定信息发现没有锁

  并且在RR隔离级别下将有ID = 20,并将差距锁定到20,并且此间隙是(13,20)之间的差距

  这表明,在高隔离水平RR下,将有很多锁比低隔离水平RC多,这将在竞争激烈时会显着影响性能。

  5.1.1单范围查询以下范围查询,它也是封锁的范围

  RC级别下的锁定信息如下

  RR隔离级锁定信息如下:

  使用RC级别下的另一连接插入以下记录以验证以下记录

  您可以看到在RC下添加一个小差距锁定,因此在插入和修改时可以添加并发。缺点是有一种幻想。

  5.1.2双范围查询查询SQL如下

  RC锁定信息如下

  RR锁定信息如下

  5.1.2不存在双范围查询RC锁定信息如下。主钥匙上只有2个记录锁,并且没有差距锁

  RR锁定信息如下,只需查看thread_id = 45

  这次我们操作F1字段,这是第二级唯一索引字段

  5.3.1发现现有值RC查询锁的信息具有3个锁,如下图所示:

  RR下的信息如下,RC在这种情况下是一致的

  [线编号1]是手表 - 级别的意图锁

  [行号2]是一个记录锁,在次要级别中添加到唯一的索引UI_F1。

  值得注意的是,lock_data是[11,11]。我们知道制作了第二级索引的记录(键,主键),因此第一个11是第二级索引字段F1的值,而第二个11是主键的值的值

  [行号3]是主键索引上的记录锁定

  5.3.2锁定查询锁定条件的不合理价值:

  RR锁定信息如下

  与RR相比,下一个键锁比RC更多(11,13]

  验证唯一索引的等效查询后,我们开始验证范围查询

  5.4.1单范围查询RC锁定信息如下:

  RR锁定信息如下

  RC小于RR REN REN少锁锁

  5.4.2 double -range查询RC锁定信息,如下所示:

  RR锁定信息如下所示

  5.4.3不存在双范围查询RC锁定信息如下:

  RR锁定信息如下:

  这次我们操作F2字段,第二个 - 级别的非唯一索引字段

  5.5.1锁定存在值RC锁定信息:

  RR查询锁的信息发现有4个锁,如下图所示:

  5.5.2锁定不存在的值RC锁定条件:

  RR查询锁定情况:

  验证非唯一索引的等效查询后,我们开始验证范围查询

  5.6.1单范围查询RC锁定信息如下:

  RR锁定信息如下:

  5.6.2双范围查询RC锁定信息:

  RR锁定信息如下所示:

  5.6.3不存在双范围查询RC锁定信息如下:

  RR锁定信息如下:

  这次我们操作F3字段,该非索引字段

  5.7.1锁定现有值RC锁定记录,只有一个锁定信息:

  发现RR查询锁的信息是添加了数据库中的数据,如下图所示:

  5.7.2锁定不存在的值RC锁定信息:

  RR查询锁定情况:

  5.8.1单范围查询RC锁定信息如下:

  5.8.2双范围查询RC锁定信息:

  5.8.3不存在双范围查询RC锁定信息如下:

  办公室中涉及的数据以及读取锁定,令状锁定和间隙锁定,并一直保持交易结束。

  RC涉及交易的数据的写锁将持续到交易结束,但是在查询操作完成后,添加的读取将立即发布。

  RC缺乏在整个交易周期中运行的锁定锁定,并且无法更改所读取的数据,因此不能防止肮脏的读数。

  全面的锁和一般应用方案,我们通常在线使用RC的隔离级别。