首页 > 其他分享 >什么是意向锁?它和意向书有什么区别?

什么是意向锁?它和意向书有什么区别?

时间:2023-12-28 16:45:39浏览次数:29  
标签:事务 加锁 行锁 Spring 什么 意向书 意向锁 MySQL

最近受废话文学的影响,所以有了今天的这个标题,希望大家能喜欢。大家不喜欢也没关系,反正我喜欢。

鲁迅先生曾经说过“我家门前有两棵树,一棵是枣树,另一棵还是枣树。”,由此可见,这老爷子算是把废话文学给玩明白了。

希望大家也能,听君一席话,如听一席话吧。

聊正题

聊完闲篇,咱们说回正题:什么是意向锁?为什么需要意向锁?

PS:这里没意向书什么事啊,标题中有,纯粹是为了好玩。他们不能说没有什么关系,那是一点关系都没有。

定义

意向锁(Intention Locks)是 MySQL InnoDB 引擎中的一种锁机制(表级锁),用于协调事务间的加锁操作,以避免冲突和死锁的发生。

为什么要有意向锁?

例如,事务 A 加锁了 Users 表中的一行数据(行锁),而事务 B 要对整个 Users 表进行加锁(表锁),那么这个时候,如果没有意向锁,那事务 B 就会加锁成功了。而事务 B 如果加锁成功的话,那么它是可以对表中的任意数据行进行操作的,包括事务 A 加锁的那行数据,所以,这个时候就发生了锁冲突。

为了避免这个问题,所以 MySQL 引入了意向锁,在事务 A 添加行锁的时候,先添加意向锁,而事务 B 在添加表锁的时候,先判断一下意向锁,如果有意向锁了,它就不能加表锁了,这样避免了锁冲突,提升了加锁判断的效率。

想想一下,如果没有意向锁的话,那么事务 B 在加表锁的时候,只能一行行的判断有没有行锁,而这种判断的效率是非常低的,尤其数据量比较大时。

意向锁分类

意向锁分为以下两种类型:

  1. 意向共享锁(Intention Shared lock,IS):表示在某个资源上设置共享锁。也就是读锁,用于读取数据的操作,允许多个事务同时持有(共享锁),不互斥。
  2. 意向排他锁(Intention Exclusive lock,IX):表示在某个资源上设置排他锁。也就是写锁,用于修改和更新数据操作,并且同一时间只能由一个事务持有,不能和其他事务共同持有,具有互斥性和排他性。

小结

意向锁并不能直接由开发者创建和使用,它是存在于 MySQL 中,由 MySQL 自行维护的一种协调事务加锁的机制。它在事务创建行锁和表锁时创建,在事务提交或回滚之后自动释放。

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

标签:事务,加锁,行锁,Spring,什么,意向书,意向锁,MySQL
From: https://www.cnblogs.com/vipstone/p/17933014.html

相关文章

  • 软件测试/测试开发|一文告诉你什么是测试用例
    前言对于一个测试工程师来说,测试用例的编写是一项必须掌握的能力,但有效的设计和熟练的编写确实一项十分复杂的技术。不仅需要掌握软件测试技术和流程,而且还要对整个软件不管从业务,还是对软件的设计,程序模块的结构,功能规格等说明都要有透彻的理解。测试的设计方法不是单独存在的,......
  • 为什么都建议配备人员摔倒AI检测算法
    旭帆科技的AI智能分析网关v4包含有30多种算法,包括人体、车辆、行为分析、烟火、入侵、安全帽、反光衣等等,可应用在安全生产、通用园区、智慧社区、智慧工地等场景中。今天,小编就其中的摔倒检测算法来展开聊聊,可以用于哪些场景。1、老年人健康监护老年人摔倒是常见的意外事件,使......
  • 什么样的情况,数据写入注册表
    原文链接:https://zhidao.baidu.com/question/21113577.html一般数据都是写入数据库,客户端软件会用到注册表。我看有不少数据写入注册表,就很疑惑,为什么不写入数据库。所以查下什么样的情况下,数据写入注册表。 软件在安装和应用的过程中需要保存一些东西,如路径等,有的还需要加载......
  • ITSM服务管理工具有什么用?
    随着企业数字化转型的推进,IT服务管理(ITSM)的重要性日益突显。为了更好地规范、优化和提升企业的IT服务质量,许多企业开始采用ITSM服务管理工具。本文将探讨ITSM服务管理工具的重要性以及为什么企业需要它们。  首先,ITSM服务管理工具能够帮助企业实现IT服务的自动化和集中化管理......
  • 锁定1.17|PolarDB开发者大会,我们将聊些什么?
     大会免费门票领取通道已开启 扫描图片二维码 or点击「报名」即可注册报名 现场还有机会领取多款PolarDB定制礼品 2024年1月17日 北京·嘉瑞文化中心 期待与你相聚~......
  • nginx WebUI进行反向代理为什么报错504
    当您在使用NginxWebUI进行反向代理时遇到504错误,这通常是由于Nginx无法在合理的时间内完成请求处理。504错误是Nginx的通用错误,表示"网关超时"。以下是可能导致此问题的原因以及相应的解决方案:1.后端服务器问题原因:后端服务器可能由于各种原因无法及时响应。解决方案:检查后端服务......
  • 企业网站开发需要注意什么?
    企业网站开发是现代商业中不可或缺的一部分。随着互联网的快速发展,企业网站成为企业与客户之间沟通的重要渠道。在这篇短文中,我将探讨企业网站开发的重要性以及一些关键的考虑因素。首先,企业网站的开发对于企业来说至关重要。一个精心设计和开发的网站可以帮助企业树立专业形象,并......
  • 为什么要实践 A+ES & CQRS ?
    Wow:基于DDD&EventSourcing的现代响应式CQRS架构微服务开发框架中文文档领域驱动|事件驱动|测试驱动|声明式设计|响应式编程|命令查询职责分离|事件溯源简介Wow是一个基于领域驱动设计和事件溯源的现代响应式CQRS微服务开发框架,历经多年生产环境......
  • 【网络安全入门】什么是DOS?DOS攻击类型有哪些?
    大家都知道,DOS攻击是网络安全中比较常见的攻击形式,它的类型和种类有很多,具有很大的危害,而且在网络生活中DOS攻击是不可避免的,那么到底什么是DOS?DOS攻击类型有哪些?虽然DOS攻击不可避免,但掌握攻击类型可以帮助我们有效预防DOS攻击,所以快跟着小编来了解一下吧。什么是DOS?......
  • 公司为什么需要文档加密软件?
    文档加密软件提供了一种有效的手段,保障企业信息的机密性、完整性和可用性。通过加密敏感数据,防范未经授权的访问和泄露,企业能够维护声誉、符合法规、保护知识产权,应对技术威胁,确保业务的安全和连续性。企业需要文档加密软件的原因包括:敏感信息保护: 文档加密软件可以确保企业......