【MySQL】一文带你理清<表级锁>(表锁,元数据锁,意向锁)

news2024/11/14 21:55:35

前言

大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C++ Linux的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《STM32》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • 一.表级锁
    • 表级锁的基本概念&分类【表锁,元数据锁,意向锁】
    • 【1】表锁
    • 【2】元数据锁:MDL
    • 【3】意向锁
      • 1.意向锁的由来
      • 2.意向锁的相关语法(意向共享锁&意向排他锁)(包含语法和演示)

一.表级锁

表级锁的基本概念&分类【表锁,元数据锁,意向锁】

  • 表级锁,每次操作锁住整张表。锁定粒度大, 发生锁冲突的概率最高 ,并发度最低。应用在MISAM、InnoDB、BDB等存储引擎中。

对于表级锁,主要分为以下三类:

  1. 表锁
  2. 元数据锁
  3. 意向锁

【1】表锁

对于表锁,分为两类:

  1. 表共享读锁 (read lock)
  2. 表独占写锁 (write lock)

语法:

  1. 加锁: locktables 表名..read/write
  2. 释放锁: unlock tables/客户端断开连接

演示:

  • 加了读锁:其他包括自己客户端只能读不能写

在这里插入图片描述

【2】元数据锁:MDL

  • 元数据可以直接理解成: 表的结构
  • MDL加锁过程是系统 自动控制,无需显式使用 ,在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作
  • 在MySOL5.5中引入了MDL,当对一张表进行增删改查的时候,加MDL读锁(共享);当对表结构进行变更操作的时候,加MDL写锁(排他)。

不同SQL对应的元数据锁有所不同:
在这里插入图片描述

【3】意向锁

1.意向锁的由来

意向锁出现的场景:

  • 线程A:有一张表和客户端,我们开启事务,更新id为3的数据,会自动加上 行锁
    在这里插入图片描述

  • 此时,我们想给这张表上 表锁————显然,是做不到的,因为和原来的 行锁 冲突了
    在这里插入图片描述

  • 线程B:也就是我们想要加表锁前,就要先检查有无行锁;即 逐行检查 ,看下哪一行加了行锁, 这种方式性能很低
    -

  • 于是乎,为了提高性能,让我们在检查时不用 逐行检查 ——我们加入了 意向锁

意向锁加入以后的情况:

  • 线程A:有一张表和客户端,我们开启事务,更新id为3的数据,会自动加上 行锁
  • 在此基础上,再给表加上一个 意向锁
  • 线程B: 我们想加一个表锁,我们先看有无意向锁,再看所要加的表锁与原来的意向锁是否兼容(读/写锁) ,不兼容则进入阻塞状态,直到线程A提交

在这里插入图片描述

2.意向锁的相关语法(意向共享锁&意向排他锁)(包含语法和演示)

  1. 意向共享锁(IS): 与表锁共享锁(read)兼容 与表锁排它锁(write)互斥
  2. 意向排他锁(IX): 与表锁共享锁(read)及排它锁(write)都互斥 。意向锁之间不会互斥。

查看查看意向锁及行锁的加锁情况:

select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;

演示:
- 注:TABLE 为表锁 RECORD为行锁

在这里插入图片描述

  • 如何确定加共享锁是意向锁呢?输入查看代码
  • 我们可以看到lock_mode下面表锁对应的是IS,说明加的共享锁是意向共享锁

在这里插入图片描述

  • 我们知道,意向共享锁(IS): 与表锁共享锁(read)兼容 , 与表锁排它锁(write)互斥
  • 也就意味着此时可以加 表锁(读锁) ,而不能加 表锁(写锁)
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2074152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFC程序设计(一) MFC框架

基本概念 SDK:开发软件的套件 WDK:开发驱动的套件 当我们开发驱动时,两者版本需要一致 MFC:Microsoft Fundation class,即微软基础类库。是基于Win32 SDK进行的封装的框架 。 MFC为我们提供了大量的WindowsSDK的代…

js 数组使用 map 结构渲染个性字段

上代码: //arr来自服务端的数据 arr arr.map(i>{return {value: i.id,text: i.co_name} }) 服务端返回的原始数据: 处理后的数据:

全局上下文视觉转换器(Global Context Vision Transformers)

摘要 https://arxiv.org/pdf/2206.09959 我们提出了全局上下文视觉转换器(GC ViT),这是一种新颖的架构,旨在提高计算机视觉中的参数和计算利用率。我们的方法利用全局上下文自注意力模块与标准的局部自注意力相结合,以…

Qt WebAssembly 警告:构建套件中未设置编译器

目录 Qt WebAssembly 警告:构建套件中未设置编译器问题解决方法 参考资料 Qt WebAssembly 警告:构建套件中未设置编译器 问题 安装好QT之后构建套件中出现黄色感叹号Qt WebAssembly 警告:构建套件中未设置编译器。 原因是现在你只安装了qt for webassembly的qt的库&#xff…

深度学习-OpenCV运用(2)

文章目录 一、OpenCV介绍二、OpenCV运用1.提取与合并通道2.图片打码3.图片组合与缩放4.图像运算 三、总结 一、OpenCV介绍 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它主要用于实时的图像处理和…

ShareSDK 企业微信

本篇文档主要讲解如何使用企业微信并进行分享和授权。 创建应用 登录企业微信并通过企业认证。选择应用管理 > 应用 >创建应用。编辑应用信息。配置授权登录信息。 以下为创建过程示例,图中信息仅为示例,创建时请按照真实信息填写,否…

Java 入门指南:异常处理(Exception Handling)

异常处理是一种处理运行时错误的机制,是处理运行时错误的有效方法之一,这样可以保留应用程序的常规流程。 Java为异常设计了一套 异常处理机制(Exception Handling),当程序运行过程中发生一些异常情况时,程…

联华证券-美联储降息补贴:额外补贴,美元短期走势或保持稳定

市场进一步确信美联储9月的加息举措,即便对加息幅度的预测并不一致。 当地时间8月23日,美联储主席鲍威尔在Jackson Hole年度会议中发出迄今为止最强烈的降息信号:为避免国内劳动力市场进一步疲弱,美联储打算采取行动,…

Spring(面试篇)

目录 什么是Spring? Spring的两大核心概念 Spring框架的设计目标,设计理念,和核心是什么 Spring的优缺点是什么? Spring由哪些应用场景 Spring由哪些模块组成? Spring框架中都用到了那些设计模式? …

Battery Cycle Life Prediction From Initial Operation Data

这个例子展示了如何使用线性回归(一种监督机器学习算法)预测快速充电锂离子电池的剩余循环寿命。使用基于物理的建模方法预测锂离子电池的循环寿命是非常复杂的,因为不同的操作条件和显著的设备可变性,即使是来自同一制造商的电池。对于这种情况&#xf…

2023高教社杯数学建模国赛C题详细代码 文章 数据教学 保姆级手把手包含文档格式 2024数模国赛教学:蔬菜类商品的自动定价和补货决策

本系列专栏将包括两大块内容 第一块赛前真题和模型教学,包括至少8次真题实战教学,每期教学专栏的最底部会提供完整的资料百度网盘包括:真题、数据、可复现代码以及文章. 第二块包括赛中思路、代码、文章的参考助攻, 会提供2024年高教社国赛各个赛题的全套参考内容(一般36h内更新…

JavaWeb学习——事务管理、AOP学习

目录 一、事务管理 1、事务回顾 2、事务进阶 a、rollbackFor属性 b、propagation属性 二、AOP学习 1、基础了解 2、AOP进阶 一、事务管理 1、事务回顾 事务的概念:事务必须服从ACID原则。ACID指的是原子性(atomicity)、一致性&#xf…

Linux网络编程:多路转接--poll/epoll

1. poll poll也是一种多路转接的方案,解决了select的fd有上限和每次调用都要重新设置关心的fd的问题。 2. poll接口 #include int poll(struct pollfd* fds, nfds_t nfds, int timeout); 参数:fds:可以看成是动态数组/数组/结构体数组 nfds&…

【生日视频制作】一群美女挥手拉蓝横幅条幅AE模板修改文字软件生成器教程特效素材【AE模板】

一群美女挥手拉蓝条横幅生日视频制作教程AE模板修改文字生成器 怎么如何做的【生日视频制作】一群美女挥手拉蓝横幅条幅AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频

Ai+若依(系统工具-->表单构建):【02篇】

系统工具 表单构建 介绍 允许用户通过拖放等可视化操作创建表单,比如用来收集数据的表格或调查问卷。 可以自定义表单的各个部分,比如添加不同的输入项和设置验证规则,无需编写代码。 提供了导出数据、导入数据、分享表单和设置权限的功能,方便数据管理和共享。 案例 通…

RoboCopy文件快速拷贝工具

RoboCopy是Windows平台(从Windows Vista/Window 7开始)自带的文件快速拷贝工具,它是xcopy命令工具的升级版,解除了xcopy拷贝文件时4GB的容量限制,同时,又支持多线程、给文件夹制作镜像、复制指定日期的文件等功能。 1 全部拷贝 假设从alice文件夹,全部拷贝到bob文件夹,则…

leetcode 80 删除有序数组中的重复项 II

正文 仍旧使用双指针, 思想与 leetcode 26 删除有序数组中的重复项 一致。只是此时因为要求保留重复元素两次,我们的左侧指针可以从第二个数据开始,且右侧指针需要和两个元素的值进行判断。 class Solution:def removeDuplicates(self, nums…

WPF—资源的使用

资源的使用 资源是可以在应用中的不同位置重复使用的对象。 资源的示例包括画笔和样式。 <Window.Resources><!--定义颜色资源--><SolidColorBrush x:Key"MyBrush" Color"#05E0E9"/><!--定义样式资源--><Style TargetType&quo…

前端技术(五)—— 使用Node.js编写简单的项目

一、 初始化项目 1. 创建项目 ⑴ 新建 api_kjzt_server 文件夹作为项目根目录&#xff0c;并初始化包管理配置文件 并在项目根目录中运行如下的命令&#xff0c;初始化包管理配置文件&#xff1a; npm init -y⑵ 运行如下的命令&#xff0c;安装特定版本的 express npm i e…

企业级WEB应用服务器TOMCAT详解

一、什么是TOMCAT 1.1来源 Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持&#xff0c;最新的Servlet 和JSP 规范总是能…