MySQL|查看事务加锁情况

文章目录

  • 使用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.hqwc.cn/news/54555.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任务15、MidJourney视频(Video)参数动态上线,制作惊艳动画短片

15.1 任务概述 本次任务将帮助你掌握Midjourney中的Video参数,并利用这些参数创作出令人惊艳的绘画作品。通过学习Video参数的基本概念和功能,以及案例的实际应用,你将学会如何正确设置和调整这些参数,从而达到你所期望的绘画效果。最终,你将运用所学知识,生成香奈儿模特…

OpenCV之信用卡识别实战

文章目录 代码视频讲解模板匹配文件主程序(ocr_template_match.py)myutils.py 代码 链接: https://pan.baidu.com/s/1KjdiqkyYGfHk97wwgF-j3g?pwdhhkf 提取码: hhkf 视频讲解 链接: https://pan.baidu.com/s/1PZ6w5NcSOuKusBTNa3Ng2g?pwd79wr 提取码: 79wr 模板匹配文件 …

使用JProfiler进入JVM分析

要评测JVM&#xff0c;必须将JProfiler的评测代理加载到JVM中。这可以通过两种不同的方式发生&#xff1a;在启动脚本中指定-agentpath VM参数&#xff0c;或者使用attach API将代理加载到已经运行的JVM中。 JProfiler支持这两种模式。添加VM参数是评测的首选方式&#xff0c;集…

ChatGPT在工作中的七种用途

1. 用 ChatGPT 替代谷歌搜索引擎 工作时&#xff0c;你一天会访问几次搜索引擎&#xff1f;有了 ChatGPT&#xff0c;使用搜索引擎的频率可能大大下降。 据报道&#xff0c;谷歌这样的搜索引擎巨头&#xff0c;实际上很担心用户最终会把自己的搜索工具换成 ChatGPT。该公司针对…

服务器出入口IP通俗理解

一、出口IP 这是机房的网络设备&#xff08;如防火墙&#xff09;给内网主机生成的一个外网IP&#xff0c;用来保证内网主机能和其他公网主机进行来回通信&#xff0c;通常作为其他接入方的IP白名单使用&#xff0c;一般有几台内网主机就有几个出口IP&#xff0c;出口IP通常和入…

想写几个上位机,是选择学c#还是 c++ qt呢?

C#基本也就上位机开发开发&#xff0c;另外做做日常用的小工具很方便。 结合PLC&#xff0c;以太网做上位机&#xff0c;这个基本上控制这块都比较有需求。 另外我们用C#也做一些工具的二次开发&#xff0c;感觉还行。 C用qt框架其实学习起来可能稍微复杂些&#xff0c;但是…

【STM32零基础入门教程03】GPIO输入输出之GPIO框图分析

本章节主要讲解点亮LED的基本原理&#xff0c;以及GPIO框图的讲解。 如何点亮LED&#xff08;输出&#xff09; 首先我们查看原理图&#xff0c;观察电路图中LED的连接情况&#xff0c;如下图可以看出我们的板子中LED一端通过限流电阻连接的PB0另一端连接的是高电平VCC&#xf…

visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载

一. 内容简介 visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载 二. 软件环境 2.1 visio 三.主要流程 3.1 下载字体 http://www.downza.cn/ 微软官方给的链接好多字体没有&#xff0c;其他好多字体网站&#xff0c;就是给你看个样式&#xff…

【具有非线性反馈的LTI系统识别】针对反馈非线性的LTI系统,提供非线性辨识方案(SimulinkMatlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

使用 AntV X6 + vue 实现单线流程图

使用 AntV X6 vue 实现单线流程图 X6 是 AntV 旗下的图编辑引擎&#xff0c;提供了一系列开箱即用的交互组件和简单易用的节点定制能力&#xff0c;方便我们快速搭建 DAG 图、ER 图、流程图等应用。 官方文档 安装 yarn add antv/x61.34.6Tips&#xff1a; 目前 X6 有 1.x…

使用IDEA操作Mysql数据库

idea中自带了关于数据库的连接 首先要确保你的MySQL正在运行中 打开idea找到database&#xff08; view —> Tool Windows —> database&#xff09;&#xff0c;大家也可以定个快捷键&#xff0c;方便以后日常操作 就是这个样子&#xff0c;然后点加号 然后就可以编写执…

【C语言进阶(2)】数据存储练习题

文章目录 练习1练习2练习3练习4练习5练习6练习7 练习1 下面代码的结果为什么会是这样&#xff1f; 代码分析 char a -1; 11111111 11111111 11111111 11111111 //-1 的补码 - 因为 a 是 char 类型的变量&#xff0c;只能存储 8 个比特位&#xff0c;将 -1 补码的后 8 位截断…