首页 > 数据库 >MySQL RC隔离级别下罕见的gap lock

MySQL RC隔离级别下罕见的gap lock

时间:2024-11-08 17:59:04浏览次数:1  
标签:test1 lock hex len gap asc MySQL id

复现方法:

 CREATE TABLE `test1` (
  `id` int(11) NOT NULL,
  `name` varchar(10) DEFAULT NULL,
  `id1` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id1` (`id1`);

insert into test.test1 values(1,'a',1),(3,'a',3),(5,'a',5);

session1:

begin;
delete from test.test1 where id=3;
insert into test.test1 values(4,'b','3');

session2:

begin;
insert into test1 values(6,'a',6);
insert into test1 values(2,'a',2);  /* 此时进入gap锁等待

session1:

insert into test.test1 values(6,'b','6');   /* sesion2报错死锁

死锁如下:

------------------------
LATEST DETECTED DEADLOCK
------------------------
2024-11-08 17:41:24 0x30a808000
*** (1) TRANSACTION:
TRANSACTION 19769, ACTIVE 12 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1160, 2 row lock(s), undo log entries 2
MySQL thread id 14, OS thread handle 13060816896, query id 450 localhost 127.0.0.1 root update
insert into test1 values(2,'a',2)
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 91 page no 4 n bits 72 index id1 of table `test`.`test1` trx id 19769 lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
 0: len 4; hex 80000003; asc     ;;
 1: len 4; hex 80000003; asc     ;;

*** (2) TRANSACTION:
TRANSACTION 19763, ACTIVE 32 sec inserting
mysql tables in use 1, locked 1
6 lock struct(s), heap size 1160, 7 row lock(s), undo log entries 2
MySQL thread id 13, OS thread handle 13061095424, query id 451 localhost 127.0.0.1 root update
insert into test.test1 values(6,'b','6')
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 91 page no 4 n bits 72 index id1 of table `test`.`test1` trx id 19763 lock mode S
Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
 0: len 4; hex 80000003; asc     ;;
 1: len 4; hex 80000003; asc     ;;

Record lock, heap no 4 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 4; hex 80000005; asc     ;;
 1: len 4; hex 80000005; asc     ;;

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 91 page no 3 n bits 80 index PRIMARY of table `test`.`test1` trx id 19763 lock mode S locks rec but not gap waiting
Record lock, heap no 6 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
 0: len 4; hex 80000006; asc     ;;
 1: len 6; hex 000000004d39; asc     M9;;
 2: len 7; hex cb000001930110; asc        ;;
 3: len 1; hex 61; asc a;;
 4: len 4; hex 80000006; asc     ;;

*** WE ROLL BACK TRANSACTION (1)

原因分析

标签:test1,lock,hex,len,gap,asc,MySQL,id
From: https://www.cnblogs.com/longfeij/p/18535541

相关文章

  • mysql(Error_code: 1032)原因与通用修复方案
    碰到MYSQL常见的1032错误,从库复制异常。通过showslavestatus\G命令也能看到对应的报错(处理时忘记截图了)。通过报错我们可以去主库找到binlog中具体的报错。mysqlbinlog--no-defaults-v-v--base64-output=DECODE-ROWSmysql-bin.018563>1106.sql这是一个事务对应一......
  • 高效集成:聚水潭采购数据同步到MySQL
    聚水潭数据集成到MySQL的技术案例分享在本次技术案例中,我们将聚焦于如何通过轻易云数据集成平台,将聚水潭系统中的采购入库单数据高效、准确地集成到MySQL数据库中。具体方案名称为“聚水潭-采购入库单-->BI阿尼三-采购入库表_copy”。首先,针对聚水潭的数据获取,我们使用了其提供......
  • NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL
    在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、告警、云台控制、语音对讲等高级功能,使其......
  • mysql分区表占用大量容量处理(优化)及归档分区表
    背景生产环境中,某个分区表两三年了,占用磁盘1T多,需要对前几年的数据做归档点击查看代码SELECTtable_schemaas'数据库',table_nameas'表名',table_rowsas'记录数',truncate(data_length/1024/1024,2)as'数据容量(MB)',truncate(index_length/1024/1024......
  • MySQL面试题
    文章目录目录文章目录1.什么是内连接、外连接、交叉连接、笛卡尔积呢?2.那MySQL的内连接、左连接、右连接有有什么区别?3.说一下数据库的三大范式?4.varchar与char的区别?5.blob和text有什么区别?6.DATETIME和TIMESTAMP的异同?7.MySQL中in和exists的区别?8.MyS......
  • MySQL储存过程控制语句
    一.条件语句1.if-then-else语句DECLARE局部变量    DEFAULT默认值语法:IF条件THEN语句列表;(如果第一条为true,就执行成功)ELSEIF条件 THEN语句列表;(如果第一条为false,就执行第二条)ELSE语句列表; (如果上面都是false,这句话就是否则,最终执行)ENDIF;(这是......
  • Kubernetes 中实现 MySQL 的读写分离
    Kubernetes中实现MySQL的读写分离在Kubernetes中实现MySQL的读写分离,可以通过主从复制架构来实现。在这种架构中,MySQL主节点(Master)负责处理所有写操作,而MySQL从节点(Slave)负责处理所有读操作。下面是一个详细的步骤指南:步骤1:创建Kubernetes集群确保你有一个运行良......
  • Ubuntu 24.04 二进制安装 MySQL 8.0.20
    相关资料操作系统:Ubuntu24.04数据库下载地址:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz部署#安装必要的依赖apt-yinstallnumactllibaio1t64-yln-sv/usr/lib/x86_64-linux-gnu/libtinfo.so.6.4/usr/lib/x86_64-li......
  • MySQL 正则表达式
    简介MySQL正则表达式概述MySQL正则表达式是一种强大的文本匹配工具,允许执行复杂的字符串搜索和处理。它使用REGEXP、RLIKE和REGEXP_LIKE()函数进行模式匹配,提供了灵活的方式来处理各种文本数据。正则表达式特别适用于模糊查询、模式匹配和文本分析场景,在数据库管理和应......
  • Mysql使用between and查询时间区间不包括右边界问题
    结论:Mysql数据库中的betweenand查询是包含右边界的,但如果字段是datetime类,数据格式则会被转换为:2018-10-0100:00:00,那么2018-10-01当天的数据就查询不到,所以就会出现不包含右边界的这种问题,而数据类型本身是date则不会出现上述问题。举例:在Mysql中有如下select语句:SELECT*FR......