MySQL中锁的简介——表级锁-元数据锁、意向锁

news/2024/12/22 13:04:51/

1.元数据锁

在这里插入图片描述
查看元数据锁

select object_type,object_scheme,object_name,lock_type,lock_duration from perfomance_scheme.metadata_locks;

2.意向锁

在这里插入图片描述
线程A开启事务后在执行update更新语句时候,会给数据加上行锁,加上行锁以后,会对整张表加上意向锁。

线程B来给整张表加上表锁时,会先检查这张表的意向锁,通过意向锁来决定它能不能对这张表加锁成功,如果加的表锁和当前这张表的意向锁是兼容的,那么直接会给这张表加锁,如果当前要加的锁和这张表的意向锁不兼容,那此时线程B将会出于阻塞状态,一直阻塞到线程A将事务提交,行锁释放,意向锁释放之后,线程B将解除阻塞状态。
在这里插入图片描述
在这里插入图片描述
线程1中:

#开启事务
begin;select * from score where id = 1 lock in share mode;

线程2中查看表中的意向锁,和执行完sql语句加的行锁,此行锁为共享锁

select object_scheme,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

IS意向共享锁和表锁里面的读锁是兼容的,和表锁里面的写锁是互斥的。
在这里插入图片描述
在这里插入图片描述
意向锁存在它的作用就是,在innodb引擎当中加的行锁和表锁之间的冲突问题。


http://www.ppmy.cn/news/987699.html

相关文章

Redis实战(3)——缓存模型与缓存更新策略

1 什么是缓存? 缓存就是数据交换的缓冲区, 是存贮数据的临时区,一般读写性能较高 \textcolor{red}{是存贮数据的临时区,一般读写性能较高} 是存贮数据的临时区,一般读写性能较高。缓存可在多个场景下使用 以一次 w e b 请求为例…

flink源码分析-获取JVM最大堆内存

flink版本: flink-1.11.2 代码位置: org.apache.flink.runtime.util.EnvironmentInformation#getMaxJvmHeapMemory 如果设置了-Xmx参数,就返回这个参数,如果没设置就返回机器物理内存的1/4. 这里主要看各个机器内存的获取方法。 /*** The maximum JVM…

SQL基础使用

SQL的概述 SQL全称: Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言。 SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发…

问题解决——datagrid远程连接虚拟机中ubuntu的mysql失败

问题解决——datagrid远程连接虚拟机中ubuntu的mysql失败 情况:datagrid远程win11系统下虚拟机里的ubuntu20.04的mysql,连接失败。 1 如果是防火墙没开放3306端口,则需要开放:linux 3306端口无法连接 无法通过防火墙的解决办法 …

ICML 2023 | 拓展机器学习的边界

编者按:如今,机器学习已成为人类未来发展的焦点领域,如何进一步拓展机器学习技术和理论的边界,是一个极富挑战性的重要话题。7月23日至29日,第四十届国际机器学习大会 ICML 2023 在美国夏威夷举行。该大会是由国际机器…

app上有个播放视频的功能,客户反馈某个时间段会卡顿,初步分析是用户多,让测试一下性能

当应用上有播放视频的功能,而用户反馈在某个时间段会出现卡顿问题时,你可以通过进行性能测试来分析这个问题。性能测试是一种评估应用在不同条件下行为的测试方法,以确保它满足所需的性能标准。以下是一些步骤: 设置测试环境&…

反复 Failed to connect to github.com port 443 after xxx ms

前提:使用了代理,浏览器能稳定访问github,但git clone一直超时 解决方案: 1. git config --global http.proxy http://127.0.0.1:1080 2. 代理设置端口1080 3. 1080可自定义 感谢来自这篇博客和评论区的提醒:解决…

CAS比较并交换概述

1.概述 CAS(Compare And Swap)表示比较并交换,是乐观锁(简单理解为不加锁)的实现,采用的是自旋锁的思想。底层是通过Unsafe类中compareAndSwapInt等方法实现。 CAS包含三个操作数,分别为:内存值,预估值,更新…