当前位置: 首页 > news >正文

第15问:快速找到 binlog 中是否有大事务

本文关键字:大事务、binlog、Linux

问题

我们并不喜欢 MySQL 中出现大事务(更新很多数据的事务),大事务往往带来很多维护的问题。

我们在维护 MySQL 时,需要关注于是否出现了较大事务,在 binlog 里找到其出现的证据。

实验

我们先创建个数据库:

这里我们启用了 GTID,对于非 GTID 的 binlog,大家也可以用类似的方法处理。

下面需要创建一些大小不同的事务,我们使用在 第11问 里使用过的手法,

反复执行,

下面我们开始研究 binlog,先解开一段看一下,

我们知道在 GTID 模式下,事务开头必然会有一个 GTID_event,如图中红框标注。

我们就过滤这一段信息,

这里用到了 grep 两个技巧:

1. 过滤 tab 字符,用到了 "$(printf '\t')" 来插入 tab 字符,无法直接使用 "\t" 字符。

2. 使用 -B 参数向前找到了匹配的前一行,输出 "at xxx",这一行是 GTID_event 在 binlog 中的位置(单位是字节)。

然后我们将其中的位置信息过滤出来,

再将每两行的位置减一下,就获得了每一个事务在 binlog 中的大小,

将这些事务的大小排序一下,取最大值,

这是这个 binlog 中最大的 10 个事务的大小,可以看到最大的事务在 binlog 中占用了 658k 大小,不算太大。

本期没有关于 MySQL 太多的知识点,只是活用 Linux 的命令,可以简单高效获取 binlog 的信息。

下面附上本期命令的文字版:

~/opt/mysql/5.7.20/bin/mysqlbinlog data/mysql-bin.000001 | grep "GTID$(printf '\t')last_committed" -B 1 \
                                    | grep -E '^# at' | awk '{print $3}' \
                                    | awk 'NR==1 {tmp=$1} NR>1 {print ($1-tmp);tmp=$1}' \
                                    | sort -n -r | head -n 10

关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

想看更多技术好文,点个“在看”吧!

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

相关文章:

  • 如何理性的看待中医,这些观众的观点很犀利
  • 你到底关注了哪些公众号?我做了一通分析
  • MySQL集群数据问题修复小记
  • 儿童的十万个为什么系列(一)
  • 从GDP数据开始理解生活中的统计数据
  • 工作忙乱之下的新机遇
  • MySQL发号问题的分析和改进
  • 《心经》的力量
  • 对于新技术栈落地和架构思维的建议
  • 《KOF97》彩蛋揭秘:九龙城看台里塞进了21位大佬?
  • 最近收集的一些数据
  • 疫情下信息技术趋势的几点观察
  • 光大银行分布式实战:国内最大缴费平台的数据库架构转型
  • 职场建议:给新人和老鸟的几点建议
  • 教孩子骑自行车
  • [译] React v16.8: 含有Hooks的版本
  • Android组件 - 收藏集 - 掘金
  • bearychat的java client
  • es6要点
  • gf框架之分页模块(五) - 自定义分页
  • HomeBrew常规使用教程
  • Laravel 中的一个后期静态绑定
  • PAT A1017 优先队列
  • Solarized Scheme
  • Spark学习笔记之相关记录
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 从0实现一个tiny react(三)生命周期
  • 前端技术周刊 2019-02-11 Serverless
  • 在Mac OS X上安装 Ruby运行环境
  • 在weex里面使用chart图表
  • gunicorn工作原理
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (09)Hive——CTE 公共表达式
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .aanva
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • [Angular] 笔记 20:NgContent
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [ASP]青辰网络考试管理系统NES X3.5
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [BZOJ2208][Jsoi2010]连通数