MYSQL意向锁的作用

这篇具有很好参考价值的文章主要介绍了MYSQL意向锁的作用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结论:当一个事务要对表进行锁定时,首先会获取相应的意向锁。其他事务可以通过检查意向锁来判断是否有其他事务在更细粒度的级别上对表进行了锁定。这有助于避免冲突和提高并发性能

在讨论此问题之前我们应当明确两个前提:

  1. Innodb存储引擎支持行锁和表锁共存
  2. 行锁与表锁之间互不冲突

意向锁是表级别的锁,意向锁之间、意向锁与表级别的共享锁、排他锁的兼容性关系如下:

MYSQL意向锁的作用

 

假设目前有一张业务表t_business,主键b_id,在某种业务场景下 事务A需要对数据行增加排他锁

SELECT xxx,xxx FROM t_business WHERE b_id = x FOR UPDATE;

此时 事务A实际上持有了两把锁 一个是表t_business的表级的意向排他锁,一个是b_id=x的行级排他锁

之后 事务B来了,想对表t_business加表级别的共享锁,由于共享锁和排他锁互斥,因此事务B在对表加共享锁之前需要明确:表上是否有行级/表级 排他锁,由于事务A持有了表t_business的意向排他锁,因此事务B无需再去逐行分析是否有数据被持有行级排他锁,提升了效率。文章来源地址https://www.toymoban.com/news/detail-837792.html

到了这里,关于MYSQL意向锁的作用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL锁(读锁、共享锁、写锁、S锁、排它锁、独占锁、X锁、表锁、意向锁、自增锁、MDL锁、RL锁、GL锁、NKL锁、插入意向锁、间隙锁、页锁、悲观锁、乐观锁、隐式锁、显示锁、全局锁、死锁)

    本文说明的是MySQL锁,和操作系统或者编程语言的锁无关。 作用:在并发情况下让数据正确的读写。 优点:并发情况下对数据读写可控,防止出错。 缺点:降低性能、增加难度。 数据操作类型划分 读锁(共享锁、S锁) 写锁(排它锁、独占锁、X锁) 粒度划分 表级锁 S锁、

    2024年03月10日
    浏览(48)
  • mysql锁的相关知识

    下面的所有例子都以一个下面这表为例 mysql锁的概念有很多,悲观锁,乐观锁,行锁,排他锁。。。。,但是请注意,这些概念并不是一个层级的。就像人里面有男人,女人,老人,小孩,公务员,农民等等。 从逻辑概念上来讲,锁分为两种 乐观锁与悲观锁. 所谓乐观锁,就

    2023年04月22日
    浏览(33)
  • MySQL中锁的概述

    按照锁的粒度来分可分为:全局锁(锁住当前数据库的所有数据表),表级锁(锁住对应的数据表),行级锁(每次锁住对应的行数据) 加全局锁:flush tables with read lock; //为当前实例加上全局锁 然后使用        mysqldump -u用户名 -p密码 备份的数据库名 要备份到的sql文件

    2024年01月25日
    浏览(41)
  • MySQL 锁的内存结构

    目录 1.摘要 2. 加锁的本质 3. 锁结构详解 3.1 锁所在的事务信息 3.2 索引信息 3.3 表锁/行锁信息 3.4 type_mode 3.5 其他信息 3.6 一堆比特位 1.摘要 在 MySQL 中,有很多种锁,例如行锁,表锁,页锁,全局锁,它们锁的粒度都不一样。更多情况下,我们只是关注这些锁的区别和作用,

    2024年02月21日
    浏览(46)
  • MySQL中锁的简介——表级锁-表锁

    2024年02月15日
    浏览(35)
  • @Transactional注解作用,不生效的场景,事务回滚

    声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。 简而言之,@Transactional注解在代码执行出错的时候能够进行事务的回滚。 在启动类上添加@EnableTransac

    2024年02月10日
    浏览(48)
  • 意向共享锁和意向排他锁

    在绝大部分情况下都应该使用行锁,因为 事务 和 行锁 往往是选择 InnoDB 的理由,但个别情况下也使用表级锁: 1)事务需要更新 大部分或全部 数据,表又比较大,如果使用默认的行锁,不仅这个事务执行效率低,而且可能造成其他事务长时间等待和锁冲突; 2)事务涉及多

    2024年02月09日
    浏览(29)
  • 使用jsp、HttpServlet完成一个登录、注册,并用MySQL连接数据进行操作

    这两个是写数据库的软件。  启动MySQL对应的版本型号。 user表 1.判断存在(有没有login的数据库,有就删掉)即删除。 DROP DATABASE IF EXISTS login; 2.创建数据库,使用数据库  #创建数据库 CREATE DATABASE login; #使用数据库 use login; 3.创建一个表我们这定义叫user,给表增添3条数据 #创

    2024年02月04日
    浏览(52)
  • Redis实战案例14-分布式锁的基本原理、不同实现方法对比以及基于Redis进行实现思路

    基于数据库的分布式锁:这种方式使用数据库的特性来实现分布式锁。具体流程如下: 获取锁:当一个节点需要获得锁时,它尝试在数据库中插入一个特定的唯一键值(如唯一约束的主键),如果插入成功,则表示获得了锁。 释放锁:当节点完成任务后,通过删除该唯一键

    2024年02月13日
    浏览(50)
  • kafka-保证数据不重复-生产者开启幂等性和事务的作用?

    适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的 ACK 消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消息的重复现象,而幂等性就是为了解决该问题。 通过3个值的唯一性去重: PID:生产者ID 分区号 seq:单

    2024年02月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包