【第30天】SQL进阶-查询优化- performance_schema系列实战五:查看最近的事务执行信息(SQL 小虚竹)

news2024/12/28 20:15:19

回城传送–》《32天SQL筑基》

文章目录

  • 零、前言
  • 一、 查看最近的事务执行信息
    • 数据准备(如果已有数据可跳过此操作)
    • 开启第一个会话,配置启用事务事件
    • 开启第二个会话,用于执行事务,并模拟事务回滚
    • 第一个会话查询活跃事件
    • 第二个会话回滚事务
    • 第一个会话再查询活跃事务事件
    • 第二个会话模拟事务正常提交
    • 第一个会话再查询活跃事务事件
  • 二、总结
  • 三、参考

零、前言

今天是学习 SQL 打卡的第 30 天,每天我会提供一篇文章供群成员阅读( 不需要订阅付钱 )。

希望大家先自己思考,如果实在没有想法,再看下面的解题思路,自己再实现一遍。在小虚竹JAVA社区 中对应的 【打卡贴】打卡,今天的任务就算完成了,养成每天学习打卡的好习惯。

​ 虚竹哥会组织大家一起学习同一篇文章,所以有什么问题都可以在群里问,群里的小伙伴可以迅速地帮到你,一个人可以走得很快,一群人可以走得很远,有一起学习交流的战友,是多么幸运的事情。

​ 我的学习策略很简单,题海策略+ 费曼学习法。如果能把这些题都认认真真自己实现一遍,那意味着 SQL 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。

今天的学习内容是:SQL进阶-查询优化- performance_schema系列实战五:查看最近的事务执行信息

一、 查看最近的事务执行信息

慢查询日志可查询一个sql的执行时长,但在实际开发中,存在大事务执行回滚,或者异常终止。这时候是不会记录到慢查询日志里的

解决方案:借助performance_schema的events_transactions_*表进行查看事务相关的记录。

这些表中详细记录了是否有事务被回滚、活跃(长事件未提交的事务也属于活跃事件)或已提交

详细的说明,可以看这边,传送门:–》SQL进阶-查询优化- performance_schema系列三:事件记录(SQL 小虚竹)

数据准备(如果已有数据可跳过此操作)

使用sysbench准备初始化数据
创建测试数据库sysbenchdemo

create database sysbenchdemo;

在这里插入图片描述
准备测试数据:

sysbench /usr/share/sysbench/oltp_insert.lua \
--mysql-host=localhost \
--mysql-port=3306 \
--mysql-socket=/tmp/mysql.sock \
--mysql-user=root \
--mysql-password=xiaoxuzhu \
--mysql-db=sysbenchdemo \
--db-driver=mysql \
--tables=8 \
--table-size=100000 \
--time=180 prepare

在这里插入图片描述

开启第一个会话,配置启用事务事件

事务事件默认是没启用的
登录mysql数据库

use performance_schema;

在这里插入图片描述

update setup_instruments set enabled='yes',timed='yes' where name like 'transaction';

在这里插入图片描述

update setup_consumers set enabled='yes' where name like '%transaction%';

在这里插入图片描述
执行清理,避免其他事务干扰

truncate events_transactions_current;
truncate events_transactions_history;
truncate events_transactions_history_long;

在这里插入图片描述

开启第二个会话,用于执行事务,并模拟事务回滚

use sysbenchdemo;

在这里插入图片描述

begin;
update sbtest1 set pad='yyy' where id=1;

在这里插入图片描述

第一个会话查询活跃事件

select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current;

在这里插入图片描述
正好一条,符合测试的情况。

第二个会话回滚事务

被回滚完成的事务不再活跃

rollback;

在这里插入图片描述

第一个会话再查询活跃事务事件

先查询活跃事件

select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current;

在这里插入图片描述
我们从图上可知,查询的活跃事件已经没有了。当前的事件这条数据的状态已经是回滚状态。

第二个会话模拟事务正常提交

begin;
update sbtest1 set pad='yyy' where id=1;
commit;

在这里插入图片描述

第一个会话再查询活跃事务事件

select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current;

在这里插入图片描述
事务事件记录中的事务事件为COMMITTED状态,表示事务已经提交成功 。

注意:如果一个事务长时间未提交(长时间处于ACTIVE状态),可以借助于information_schema.innodb_trx表来进行辅助判断

先在第二个会话开启一个事务。

begin;
update sbtest1 set pad='yyy' where id=1;

在这里插入图片描述

select * from information_schema.innodb_trx;

在这里插入图片描述
可以看到事务是什么时间点开始的。

二、总结

通过本文学习,掌握了如何查看最近的事务执行信息。通过两个会话之间的实战演练,清晰明了地展示了事务从开启到回滚时,通过performance_schema可以清楚地看到执行情况。
performance_schema的实战系列到今天为止介绍完成,后面有比较好的实战案例,会不定期地添加进来,如果您有不错的performance_schema实战案例,欢迎找我聊聊,可以一起探讨探讨。感谢大家的支持,让我们下文见。

三、参考

应用示例荟萃 | performance_schema全方位介绍(下)
SQL进阶-查询优化- performance_schema系列三:事件记录(SQL 小虚竹)

我是虚竹哥,我们明天见~

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

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

相关文章

详解无线技术标准都使用哪些频段?中国物联网市场又适用哪些频段

由于各行各业都有各自的频段只应用需求,所以一般频段都是由国家来进行分配的。国家设立无线电管理机构,通过拍卖、定价的方法向企业、机构发放频段使用许可。获得许可的机构将会获得拍照。这也就是5G,4G时各运营商获得国家颁发牌照的由来。只…

【QT】TCP通信(QTcpServer 和 QTcpSocket)

目录1. TCP通信概述2. QTcpServer2.1 公共函数2.2 信号2.3 保护函数3. QTcpSocket3.1 公共函数3.2 信号4. 代码示例4.1 服务器端MainWindow.hMainWindow.cpp4.2 客户端MainWindow.hMainWindow.cpp4.3 界面显示1. TCP通信概述 TCP是一种被大多数Internet网络协议(如…

【设计模式】我终于读懂了代理模式。。。

👦代理模式的基本介绍 1)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 2)被代理的对象可以是远程对象、创建…

SharpImpersonation:一款基于令牌和Shellcode注入的用户模拟工具

关于SharpImpersonation SharpImpersonation是一款功能强大的用户模拟工具,该工具基于令牌机制和Shellcode注入技术实现其功能,可以帮助广大研究人员更好地对组织内部的网络环境和系统安全进行分析和测试。 该工具基于 Tokenvator的代码库实现其功能&a…

webpack、vite、vue-cli、create-vue 的区别

webpack、vite、vue-cli、create-vue 的区别 首先说结论 Rollup更适合打包库,webpack更适合打包项目应用,vite基于rollup实现了热更新也适合打包项目。 功能工具工具脚手架vue-clicreate-vue构建项目vite打包代码webpackrollup 脚手架:用于初始化&#…

icon-font的使用

先登录阿里巴巴图标矢量库官网iconfont-阿里巴巴矢量图标库在官网挑选需要的图标点击图标购物车并且点击下载代码下载好之后将文件夹里面的css,ttf文件放置到你的项目当中并且点击里面的html文件这里面有详细的用法,这里我是用的时font class方法‘方法二…

【macOS】mac电脑M2芯片安装Homebrew 最简单的方法

一 Homebrew的安装 打开终端,复制如下命令,按回车执行 M芯片和Intel芯片均可 中途可能需要你手动输入密码,输入完成回车即可(密码不可见 选择中科大或者清华镜像源 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/Hom…

MyBatis案例 | 使用映射配置文件实现CRUD操作——修改数据

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&…

简单易懂、无线产品上市认证:进网许可证、入网证、CTA认证

简单易懂、无线产品上市认证:进网许可证、入网证、CTA认证 通信产品想在中国市场进行销售,一般需要通过以下三种认证 : CCC强制认证、TA型号核准(SRRC)、NAL进网许可(CTA) 今天我们来详细了解一下NAL(Network Access License)工信部信息通信管理局的相关要求。 那么…

【软考】系统集成项目管理工程师(二十一)项目收尾管理

1. 项目验收2. 项目总结3. 系统维护4. 项目后评价补充:人员转移和资源遣散广义的系统集成项目收尾管理工作通常包含四类典型的工作:项目验收工作、项目总结工作、系统维护工作 以及 项目后评价工作,此外项目团队成员的后续工作也应在收尾管理时妥善安排;狭义的系统集成项目…

C++程序中执行abort等操作导致没有生成dump文件的问题案例分析

目录 1、概述 2、查看C运行时函数abort的内部实现 3、开源库jsoncpp中调用abort的代码场景说明 4、开源库WebRTC中调用abort的代码场景说明 5、项目问题实例分析 5.1、问题说明 5.2、进一步分析 5.3、动态申请内存失败的可能原因分析 6、最后 VC常用功能开发汇总&…

计算机网络(第三版) 胡亮 课后习题第二章答案

计算机网络(第三版) 胡亮 课后习题第二章答案 1、数据通信系统由哪些部分组成? 信源、发送设备、传输设备、接受设备,信宿 2、数据通信应该解决的主要问题有哪些? 提高传输系统的利用率接口,编码和同步交换…

C++类基础(十二)

运算符重载(终) ● 类型转换运算符 – 函数声明为 operator type() const – 与单参数构造函数一样,都引入了一种类型转换方式 struct Str {Str(int p): val(p){}operator int() const //重载类型转换运算符: 没有显示声明返回类型&#xff…

百趣代谢组学分享,补充α-酮酸的低蛋白饮食对肾脏具有保护作用

文章标题:Reno-Protective Effect of Low Protein Diet Supplemented With α-Ketoacid Through Gut Microbiota and Fecal Metabolism in 5/6 Nephrectomized Mice 发表期刊:Frontiers in Nutrition 影响因子:6.59 作者单位:…

opencv调取摄像头录制

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

月薪11k!从财务专员到软件测试工程师,成都校区小哥哥用三个月实现转行换岗

好久没和大家分享学员的转行经历了,或许在一些人看来他们的故事与自己无关,但同样也能引起一些人的共鸣,可以帮助到那些陷于就业焦虑的同学找到目标和方向。相仿的年龄、相同的职业、相似的压力…在转行软件测试追求更好生活的路上&#xff0…

Python - 文件基础操作

目录 文件的读取 open()打开函数 read类型 read()方法 readlines()方法 readline()方法 for循环读取文件行 close() 关闭文件对象 with open 语法 文件的写入 文件的追加 文件的读取 操作 功能 文件对象 open(file, mode, encoding) 打开文件获得文件对象 文件…

C语言学习笔记(六): 探索函数与变量

函数的定义 形参和实参 在定义函数时函数名后面括号中的变量名称为“形式参数”(简称“形参”)或“虚拟参数”。 在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”(简称“实参”)。 当函数被调用…

独自开:提供创业机会、享受平台分红、推出新颖赚钱副业

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 前言 独自开:一款聚焦软件定制开发,独立、自主、开放平台 独创分层标准化平台架构,满足系统不断生长的个性化需求多端一键部署前端业务交互与展…

KMP算法详解

注意:PC阅读效果更佳,建议阅读的同时完成代码实践加深理解一、问题描述指定文本串:aabaabaaf和模式串:aabaaf使用KMP算法判断模式串是否在文本串中出现过?假定模式串的长度小于文本串二、思路解析BF算法的问题是&#…