首页 > 其他分享 >《三》行锁-表锁-间隙锁

《三》行锁-表锁-间隙锁

时间:2024-09-08 13:49:43浏览次数:15  
标签:NULL 间隙 DEFAULT 行锁 索引 parentid -- 表锁 select

《三》行锁-表锁-间隙锁


在RR级别下,for update,lock in share mode默认加的锁时next-key 锁

一、行锁

  • 当select语句走的是主键索引时,next-key变更为行锁

二、表锁

  • 当select语句没有走索引时,为表锁

三、间隙锁

  • 当select语句走的是普通索引,包括唯一索引时为间隙锁

    CREATE TABLE `tree` (
      `id` bigint NOT NULL AUTO_INCREMENT,
      `parentid` bigint DEFAULT NULL,
      `name` varchar(50) DEFAULT NULL,
      `type` varchar(20) DEFAULT NULL COMMENT '事业单位,学校,其它',
      `persionid` bigint DEFAULT NULL,
      `sort` int DEFAULT NULL,
      `tm` datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    
    # 添加索引 parentid_index	parentid	UNIQUE	0	A	4			0	
    
    begin;
    -- 主键索引 next-key lock会退化为行锁,能正常插入id为4的记录
    -- select * from tree where id in (3, 8) for update ;
    
    -- 普通索引/唯一索引的next-key lock不会退化,锁住parentid在(左开区间最靠近3的值,右开区间最靠近8的值)区间的记录
    -- select * from tree where parentid in (3, 8) for update ;
    -- [3, 正无穷), 大于8的值没有则正无穷
    -- select * from tree where parentid>3 and parentid<8 for update ;
    
    
    commit;
    

标签:NULL,间隙,DEFAULT,行锁,索引,parentid,--,表锁,select
From: https://blog.csdn.net/mll_stone/article/details/142025797

相关文章

  • 《三》行锁-表锁-间隙锁
    《三》行锁-表锁-间隙锁在RR级别下,forupdate,lockinsharemode默认加的锁时next-key锁一、行锁当select语句走的是主键索引时,next-key变更为行锁二、表锁当select语句没有走索引时,为表锁三、间隙锁当select语句走的是普通索引,包括唯一索引时为间隙锁CREATETABL......
  • ORACLE中行锁问题排查手段
    概念描述行锁,对应等待事件’enq:TX-rowlockcontention’。是应用环境中经常碰到的故障现象。当发生行锁时,往往意味着大量业务会话被阻塞。造成业务功能无法进行。因此需要尽快排查出问题源头及原因。采取有效的处理措施。关于行锁等待事件enq:TX-rowlockcontention,通......
  • mysql数据库 行级锁,间隙锁和临键锁详解
    目录准备查看锁命令演示普通的select语句共享锁与排他锁无索引行锁升级为表锁间隙锁&临键锁索引上的等值查询(索引为唯一索引)索引上的等值查询(索引为普通索引)索引上的范围查询(唯一索引)准备我的mysql版本是8。CREATETABLE`user`(`id`intunsignedN......
  • 【MySQL(锁篇)】深入MySQL锁机制:从全局到行级,解锁数据库性能瓶颈(下:行锁分析实战、死锁原
    文章目录MySQL(锁篇)-全局锁、表锁、行锁(记录锁、间隙锁、临键锁、插入意向锁)、意向锁、SQL加锁分析、死锁产生原因与排查行锁分析实战1读已提交RC1.1组合一:ID是主键1.2组合二:ID唯一索引1.3组合三:ID非唯一索引1.4组合四:ID无索引2可重复读RR2.1组合五:ID主键2.2组......
  • 使用 Azure Vision AI 的预训练模型分析货架图像时检测货架中的物体和间隙
    我正在做货架产品识别,其中webApp(使用Flask构建)使用AzureVisionAI的预训练模型分析货架图像。我为此使用了AzureVM实例。我需要检测对象以及空白区域即这些对象之间的间隙以下代码app.py标记检测到的对象以及它们之间的间隙:importo......
  • 【MySQL进阶之路 | 高级篇】行锁之记录锁和间隙锁
    1.InnoDB的行锁行锁(rowlock)也称为记录锁。顾名思义,就是锁住某一行(某个记录row)。需要注意的是,MySQL服务层并没有行锁机制,行级锁只在存储引擎层实现。优点:锁定力度小,发生锁冲突概率低,可以实现的并发度高。缺点:对于锁的开销比较大,加锁会比较慢,容易出现死锁的情况。InnoDB与M......
  • 如何调试:断言错误:blk ref_locs 中的间隙
    我不知道如何解决这个似乎是随机发生的错误。我无法分享源代码,但如果有任何关于我可以采取哪些措施来防止此错误的想法,我将不胜感激。现在,我认为作为一种解决方法,我将捕获错误并重试...不确定这是否有效。就像上下文一样,我有一个生产者线程(显示问题的线程)填充数据帧以供消费者读......
  • 第六讲:行锁功过:怎么减少行锁对性能的影响?
    目录第六讲:行锁功过:怎么减少行锁对性能的影响?闲聊:行锁是什么两阶段锁协议示例:死锁和死锁检测第一种策略:第二种策略:策略分析场景提问:要把死锁关掉吗?控制并发度是否可以解决那怎么办小结深入:第一条:第二条:第三条提问:答案第六讲:行锁功过:怎么减少行锁对性能的影响?闲聊:​ 在上一篇文......
  • 第五讲:全局锁和表锁 :给表加个字段怎么有这么多阻碍?
    目录第五讲:全局锁和表锁:给表加个字段怎么有这么多阻碍?引言:锁的分类:全局锁场景:弊端:好处分析:回顾:提出问题:问题一:问题二:表级锁表锁:元数据锁(MDL)案例:变故发生:基于案列说问题:操作小结提问:官方:我的理解(片面了):深入:第五讲:全局锁和表锁:给表加个字段怎么有这么多阻碍?引言:​ 今天我要......
  • MySQL-表级锁(表锁、元数据锁、意向锁)
    文章目录1、表级锁介绍1.1、对于表级锁,主要分为以下三类:2、表锁2.1、对于表锁,分为两类:2.2、共享读锁2.2.1、创建表score2.3、独占写锁3、元数据锁3.1、查看数据库中的元数据锁的情况4、意向锁4.1、假如没有意向锁4.2、有了意向锁之后4.3、查看意向锁及行锁的加锁情......