MySQL|查看事务加锁情况

news2024/12/23 6:37:42

文章目录

  • 使用information_schema数据库中的表获取锁信息
    • INNODB_TRX
    • INNODB_LOCKS
    • INNODB_LOCK_WAITS
  • 使用SHOW ENGINE INNODB STATUS获取信息
  • 补充

使用information_schema数据库中的表获取锁信息

在information_schema数据库中,有几个与事务和锁紧密相关的表

INNODB_TRX

INNODB_TRX表结构
在这里插入图片描述
该表存储了INNODB存储引擎当前正在执行的事务信息,包括事务id(如果没有为该事务分配唯一的事务id,则会输出该事务对应的内存结构的指针)、事务状态(比如事务是正在运行还是等待获取某个锁、事务正在执行的语句、事务是何时开启的)等等。
比如在一个会话中执行事务T1:
在这里插入图片描述

在另一个会话中查询INNODB_TRX表

select * from information_schema.INNODB_TRX;

“”“内容太多无法截图”“”
查询部分内容

select trx_id,trx_state,trx_isolation_level,trx_tables_locked,trx_rows_locked,trx_lock_structs from information_schema.INNODB_TRX;

在这里插入图片描述

  • trx_tables_locked:表示该事务目前加了多少个表级锁;
  • trx_rows_locked:表示该事务目前加了多少个行级锁;(不包括隐式锁)
  • trx_lock_structs:表示该事务生成了多少个内存中的锁结构

INNODB_LOCKS

该表记录了一些锁信息。

  • 如果一个事务想要获取某个锁但未获取到,则记录该锁信息
  • 如果一个事务获取到了某个锁,但是这个锁阻塞了别的事务,则记录该锁信息
    比如,在刚刚开启的事务T1中,给表中的记录加锁
    在这里插入图片描述
    查看INNODB_LOCKS表
    在这里插入图片描述
    开启第二个事务T2,执行加锁语句。会发现该语句被锁住了;
    在这里插入图片描述
    查询INNODB_LOCKS表
    在这里插入图片描述
    仅凭以上信息无法判断出,哪个事务因为哪个事务加锁成功而导致被阻塞。可以通过INNODB_LOCK_WAITS获得更多的信息。

INNODB_LOCK_WAITS

表明每个阻塞的事务因为获取不到哪个事务持有的锁而阻塞。
在这里插入图片描述

  • requesting_trx_id表示因为获取不到锁而被阻塞的事务的事务id
  • blocking_trx_id表示获取到别的事物需要的锁而导致其被阻塞的事务的事务id
    查询这两个表时都得到了一个“WARING”,查看该waring
    在这里插入图片描述
    原因是这两个表在目前的MySQL版本(5.7)中被标记为“已过时”,未来的版本可能会被删除。(在MySQL中已经被移除)

使用SHOW ENGINE INNODB STATUS获取信息

首先给表加上二级索引

在这里插入图片描述

新开启一个事务;执行以下语句

在这里插入图片描述

直接通过“show engine innodb status”查看情况,(内容太多只截取部分信息)

在这里插入图片描述

  • Trx id counter is 9997下一个待分配的事务ID
  • Purge done for trx’s n:o < 9995 undo n:o <0 一些关于purge的信息
  • History list length 0每个回滚段中都有一个history链表
    为了看出哪个事务对哪些记录加了哪些锁,将系统变量innodb_status_output_locks(这个系统变量是在MySQL5.6.16中引入的)设置为ON:
set global innodb_status_output_locks = ON;

在这里插入图片描述

补充

查看字符集

show variables like 'character%';
show variables like  'collation%'
# 查看数据库支持的字符集
show charset;
# 查看数据库的字符集
show create database db_name;
# 查看数据表的字符集
show create table tb_name;

修改字符集

# 修改库字符集
alter database db_name default charset name;
# 修改数据表字符集
alter table tb_name default charset name;
# 建库时指定
create database db_name default charset name;
# 建表时指定
create table tb_name () default charset name;

ps:修改库字符集后库里面的表的字符集不会随着库的字符集更改而更改
(如果在库里面创建表时不指定字符集,这个表的字符集默认是库的字符集)
在这里插入图片描述

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

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

相关文章

回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经网络多输入单输出回归预测

回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经网络多输入单输出回归预测效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经…

MySQL高阶知识点(一) 一条 SQL查询语句是如何被执行的

一条 SQL查询语句是如何被执行的 MySQL 的基本架构示意图如下所示&#xff1a;

MySQL分析查询语句Explain

1概述 ​ 定位了查询慢的SQL之后&#xff0c;就可以使用EXPLAIN或者DESCRIBE工具做针对性的分析查询。两者使用方法相同&#xff0c;并且分析结果也是相同的。 ​ MySQL中有专门负责SQL语句优化的优化器模块&#xff0c;主要功能是计算分析系统中收集到的统计信息&#xff0c…

生信豆芽菜-limma差异分析使用说明

网站&#xff1a;http://www.sxdyc.com/diffLimmaAnalyse 一、limma简介 什么是limma&#xff1f; 首先要明白&#xff0c;不管哪种差异分析&#xff0c;其本质都是广义线性模型。 limma也是广义线性模型的一种&#xff0c;其对每个gene的表达量拟合一个线性方程。 limma的分析…

模拟实现消息队列项目(系列8) -- 实现MqClient

目录 前言 1. 创建ConnectionFactory 2. Connection 和 Channel 的定义 2.1 Connection 2.2 Channel 3. 封装请求响应读写操作 3.1 写入请求 3.2 读取响应 3.3 Connection中创建Channel 4. 封装发送请求的操作 4.1 创建Channel 4.2 阻塞等待服务器响应 4.3 添加响应信息到 basi…

【构造】CF1798 D

Problem - D - Codeforces 题意&#xff1a; 思路&#xff1a; 首先如果 a 全是 00&#xff0c;那么显然无解。 否则考虑从左到右构造新数列&#xff0c;维护新数列的前缀和 s。 如果 s≥0&#xff0c;则在剩余未加入的数中随便选择一个非正数添加到新数列末尾。如果 s<…

Semantic Kernel 入门系列:Memory内存

了解的运作原理之后&#xff0c;就可以开始使用Semantic Kernel来制作应用了。 Semantic Kernel将embedding的功能封装到了Memory中&#xff0c;用来存储上下文信息&#xff0c;就好像电脑的内存一样&#xff0c;而LLM就像是CPU一样&#xff0c;我们所需要做的就是从内存中取出…

视频声音怎么转换成文字?这四种转换方法很简单

将视频声音转换成文字的好处不仅仅限于方便记录、保存和查阅视频内容。它还可以大大提高视频内容的可访问性和可搜索性&#xff0c;使得非母语人士、听力障碍者等人群更容易理解视频内容&#xff0c;并且可以更快速地找到相关信息。此外&#xff0c;将视频声音转换成文字还可以…

ArcGISPro随机森林自动化调参分类预测模型展示

更改ArcGISPro的python环境变量请参考文章 ArcGISPro中如何使用机器学习脚本_Z_W_H_的博客-CSDN博客 脚本文件如下 点击运行 结果展示 负类预测概率 正类预测概率 二值化概率 文件夹&#xff08;模型验证结果&#xff09; 数据集数据库 ROC曲线 由于个人数据量太少所以…

工业4.0:欢迎来到智能制造

制造业正在经历一场被称为“工业4.0”的全新技术革命&#xff0c;这场革命将数字化、网络化、智能化和自动化技术融合在一起&#xff0c;旨在打造高质、高效、高产且可持续的智能工厂。工业4.0将彻底改变产品制造的方式&#xff0c;颠覆我们对制造业的传统认知。 什么是工业4.…

APP电话管家在各行业的应用

目前语音呼叫在各行业广泛应用&#xff0c;不管是电话销售也好&#xff0c;还是客户呼入咨询也好&#xff0c;部署呼叫中心对于业务提升&#xff0c;还是很有效率的。但是随着使用的行业越来越多&#xff0c;有些行业属性所在&#xff0c;需要有便于携带&#xff0c;企业管理可…

无涯教程-Perl - exp函数

描述 此函数将e(自然对数底数)返回到EXPR的幂。如果省略EXPR,则给出exp($_)。 语法 以下是此函数的简单语法- exp EXPRexp返回值 此函数不返回任何值。 Perl 中的 exp函数 - 无涯教程网无涯教程网提供描述此函数将e(自然对数底数)返回到EXPR的幂。如果省略EXPR,则给出exp(…

Flowable-结束事件-终止结束事件

目录 定义图形标记XML内容视频教程 定义 当流程到达终止结束事件时&#xff0c;该流程将终止。当流程实例有多个流程分支被激活时&#xff0c;当有一个 分支到达终止结束事件时&#xff0c;所有其它流程分支也立即结束。在 flowable 中&#xff0c;当流程执行到达终止结 束事件…

轻松抓取网页内容!API助力开发者,快速数据采集

在如今这个信息爆炸的时代&#xff0c;人们需要从各种渠道获取数据来支持自己的业务需求。而对于开发者们来说&#xff0c;如何快速、准确地从互联网上抓取所需的数据也成为了一项重要的技能。而抓取网页内容 API 则是一种能够帮助开发者轻松实现数据抓取的工具。 一、什么是抓…

springboot mongo 使用

nosql对我来说&#xff0c;就是用它的变动列&#xff0c;如果列是固定的&#xff0c;我为什么不用mysql这种关系型数据库呢&#xff1f; 所以&#xff0c;现在网上搜出来的大部分&#xff0c;用实体类去接的做法&#xff0c;并不适合我的需求。 所以&#xff0c;整理记录一下…

Vue命名规范

JS文件命名 一般采用的是小驼峰命名法&#xff0c;如 pieChartHelp 第一个单词小写&#xff0c;其他单词首字母大写 Components 文件命名 一般采用的是大驼峰命名法&#xff0c;如PieChart 所有单词的首字母大写 常量命名 一般全部大写&#xff0c;每个单词使用分隔符隔开&…

python_day18_socket客户端

客户端 import socket# 创建socket对象 socket_client socket.socket() # 链接服务器 socket_client.connect(("localhost", 19999))发消息 while True:# 发消息msg input("输入&#xff1a;")if msg exit:breaksocket_client.send(msg.encode("U…

Snapdrop手机电脑互传-无需下载App

软件介绍 Snapdrop&#xff1a;浏览器中的本地文件共享。灵感来自苹果的空投。 软件访问地址&#xff1a; Snapdrop官网地址 软件开源地址&#xff1a; github 软件截图

v-if与v-show造成部分元素丢失的问题——v-if复用元素问题

问题描述 在写tab切换时遇到了一个问题&#xff0c;以下为简化后的问题所在的代码&#xff1a; <img v-if"tabIndex 2" id"t1"> <div v-if"tabIndex 2" id"t2"></div> <div v-if"tabIndex 2" id&…

嘉楠勘智k230开发板上手记录(三)--K230_RVV实战

按照K230_RVV实战.md操作 在k230_sdk目录下运行&#xff0c;Makefile里默认的toolchain路径是在/opt下的&#xff0c;需要拷贝过去 cp -r toolchain /opt/ make rt-smart-apps 进入目录 src/big/rt-smart 运行脚本 source smart-env.sh riscv64 配置环境变量 source smart-e…