暂无图片
MySQL 有什么工具能分析show engine innodb status 里面内容,主要是死锁?
我来答
分享
暂无图片 匿名用户
MySQL 有什么工具能分析show engine innodb status 里面内容,主要是死锁?
暂无图片 5M

MySQL 有什么工具能分析show engine innodb status 里面内容,主要是死锁?

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
布衣
暂无图片
暂无图片 评论
暂无图片 有用 0
打赏 0
李宏达

show engine innodb status 本身就是很好的分析工具了,耐心看一下就好了。

暂无图片 评论
暂无图片 有用 1
打赏 0
严少安
2022-11-03
👍‍
张sir

可以试试 pt-deadlock-logger,这个工具也是基于show engine innodb status分析的。但是show engine innodb status只显示死锁时的两条sql,绝大部分的死锁并不是只有两条SQL导致的,即使找到SQL,也需要通过梳理应用逻辑分析。

暂无图片 评论
暂无图片 有用 2
打赏 0
2022-11-04
这个工具从哪里下载? 怎么使用
张sir
答主
2022-11-04
这个是percona-tookit里的一个工具,下载安装参考https://www.modb.pro/db/127415 使用可以参考:https://blog.csdn.net/weixin_38708177/article/details/119999918
大大刺猬

这有个innodb status分析工具 : https://github.com/ddcw/innodb_status
支持离线分析, 支持标准IO. 支持5.7/8.0
效果如下:

[root@ddcw21 innodb_status]#python innodb_status.py -h 127.0.0.1 -P3314 -p123456  
说明:
采集时间: 2022-10-30 18:50:31
下面涉及到的 每秒平均值 计算时间均为最近 10 秒内

master线程:
系统繁忙程度(越大越繁忙): 0.99 %
日志写入和刷新次数: 0

SEMAPHORES信号量:
rw_s_spin_wait_count 0
rw_s_spin_round_count 0
rw_s_os_wait_count 0
rw_x_spin_wait_count 0
rw_x_spin_round_count 0
rw_x_os_wait_count 0
rw_sx_spin_wait_count 0
rw_sx_spin_round_count 0
rw_sx_os_wait_count 0
每次空转等待的锁: rw_s:0.00  rw_x:0.00 rw_sx:0.00

死锁(最近一条)
事务1:     事务ID:623011  connection_id:37  连接信息: localhost 127.0.0.1 root updating 
事务1的SQL: update t2022 set name='s1' where id=2
事务2:     事务ID:623010  connection_id:38  连接信息: localhost 127.0.0.1 root updating 
事务1的SQL: update t2022 set name='s1' where id=1
回滚事务: 2

事务汇总信息
max_trx_id : 722728
min_trx_id : 722711
max_undo_id: 0
purge线程状态: running but idle
undo包含的事务数: 373
事务ID:722726  事务状态:ACTIVE (PREPARED) 0 sec  锁:6  堆大小:1128  锁行数:3  事务中修改或插入的行数:4  MYSQL_PROCESS_ID:74
事务ID:722725  事务状态:ACTIVE (PREPARED) 0 sec  锁:6  堆大小:1128  锁行数:3  事务中修改或插入的行数:4  MYSQL_PROCESS_ID:81
事务ID:722721  事务状态:ACTIVE (PREPARED) 0 sec  锁:6  堆大小:1128  锁行数:3  事务中修改或插入的行数:4  MYSQL_PROCESS_ID:76

文件IO
Pending normal 异步IO READ (对应read thread) :  [0, 0, 0, 0, 0, 0, 0, 0]
Pending normal 异步IO WRITE(对应WRIET thread):  [0, 0, 0, 0]
挂起(pending)的redo log flush: 0
挂起(pending)的tablespace flush: 18446744073709551615
OS总读次数: 110904  速度: 607.22 次/秒.  平均每次读 16384 字节
OS总写次数: 2069284  速度: 13879.56 次/秒. 
OS总flush次数: 492921  速度: 3065.85 次/秒. 

insert/change buffer和自适应hash索引
已合并页的数量: 4 页.   ibuf空闲列表长度: 321 页.  ibuf大小: 326 页.  合并插入次数: 34317
合并操作次数: insert buffer: 22372  delete buffer: 42949   purge buffer: 24266
无需合并操作的次数: insert buffer: 0  delete buffer: 0   purge buffer: 0
使用hash索引的查询 23722.93次/秒  未使用hash使用的查询 21353.26次/秒   自适应hash索引使用率52.63%

日志信息(redo)
最新产生的LSN: 3538249320
已刷盘的LSN: 3538249320
最老的LSN: 3523077060
最新检查点LSN: 3523077060
redo已完成的IO次数: 1869841  速度:12831.80次/秒

BUFFER POOL AND MEMORY(不含具体实例的,只含汇总的)
总内存: 0 字节
系统(字典)使用: 513567 字节
buffer pool: 8192 页
free buffer: 466 页
LRU        : 7312 页
old LRU    : 2680 页
脏页(flush list)            : 3952 页
等待读入的页(pending read)  : 0 页
等待的写(pending write) : LRU: 0 页.   flush_list(等待刷新的脏页): 0 页.   单页: 0 页
LRU made young(LRU中移动到前部的页数,就是经常使用的页) 204296 页(速度:1266.04/s),   non-young 522516 页(速度:3023.38/s)
从磁盘读取的页: 110856(607.22/s)   在内存中创建的页(无数据): 3541(22.92/s)     写入磁盘的页: 159355(916.13/s)
缓存命中率:998 / 1000
预读速度: 0.00/s   (因未被访问)驱除速度: 0.00/s   随机预读速度: 0.00/s

行操作ROW OPERATIONS
read view:  8
主进程ID: 3589 (sleeping)
插入行数: 201329(1277.57/s)   更新行数: 402658(2554.94/s)   删除行数: 201330(1277.57/s)   读行数: 83955466(532727.33/s)

复制
暂无图片 评论
暂无图片 有用 0
打赏 0

你还需要开启 打印参数 可能会把死锁所有信息打印全

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
请教各位,sql server 向mysql 同步数据,有啥好工具吗?
回答 2
已采纳
看你要求什么级别的同步,整体同步,还是多表同步?ogg,kettle都可以或者自己写个同步程序
MySQL 单行插入会对主键产生间隙锁吗?
回答 1
https://zhuanlan.zhihu.com/p/356824126希望对你有帮助
mysql从库大量死锁怎么排查?
回答 1
已采纳
showengineinnodbstatus,里面会有最新的记录的。
MySQL load data local infile 导入5kw数据太慢要怎么解决?
回答 2
1、去掉索引,导入完再建索引。2、如果没有备库,先关闭binlog。3、把双1参数调成异步刷盘,充分利用磁盘io。
MySQL5.7初始化密码错误:error 1820 (HY000):you must reset your password using ALTER USER STATEMENT before
回答 1
已采纳
创建完mysql后,需要使用系统生成的密码登陆后,进行root密码修改;
ogg 捕获MySQL库问题
回答 1
一个进程就是配置一个库的,如果你还想配置其他库里面的表,再起一个进程。另外即使是在配置oracle数据库,也只能是一个捕获进程对应一个库的。
mysql 5.7多线程复制,线程数如何设置,有参考某个服务器参数吗?
回答 1
并行的线程数,建议这个值不要超过CPU的核数slaveparalleltypeLOGICALCLOCKslaveparallelworkers8默认值为0,为1表示按照二进制日志的顺序在从库回放,设在
如何在另一个字段中插入自增id的值?而且不存在并发问题
回答 1
来自《MySQL核心实战45讲》CREATETABLEt(idint(11)NOTNULLAUTOINCREMENT,cint(11)DEFAULTNULL,dint(11)DEFAULTNULL,P
MySQL在事务执行过程中会产生哪两种Undo Log?
回答 1
已采纳
在事务执行过程中会产生两种UndoLog:1、insert的undo记录。insert是不需要Purge线程的,只要事务提交了,就可以丢掉回滚记录。2、update的undo记录(delete也算在这
MySQL 有一张分区表,70亿数据,按日期来分区,想查指定日期的数据,怎么快速查出来?
回答 2
按照日期分区,是一天一分区?还是一月一分区,如果一天一分区那就按照分区查,分区全表扫描,不走索引。