MySQL Innodb定位阻塞事务源头SQL--innotop工具
概述
很多时候我们在MySQL数据库中会经常出现事务之间阻塞的问题,也就是阻塞lock,oracle的话实际上之前提供的脚本已经可以很直观看出阻塞的问题,那么对于mysql数据库我们应如何快速查找定位问题根源?
这里介绍怎么用innotop工具来分析,用实验来进行演示。
一、环境准备
数据库:mysql5.7.24 操作系统:centos7.3
1、数据准备
create database t DEFAULT CHARSET utf8 COLLATE utf8_general_ci; use t; create table test_blocking(id int primary key, name varchar(12)); insert into test_blocking select 1, 'hwb' from dual; insert into test_blocking select 2, 'hwb2' from dual; insert into test_blocking select 3, 'hwb3' from dual;
2、参数设置
为了实验效果,我们先将参数innodb_lock_wait_timeout设置为100,否则很快就会提示ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
show variables like 'innodb_lock_wait_timeout'; set global innodb_lock_wait_timeout=100 ;
二、被阻塞环境模拟
1、第一个会话
select connection_id() from dual; set session autocommit=0; select * from test_blocking where id=1 for update;
2、第二个会话
在第二个连接会话中执行更新脚本
select connection_id() from dual; update test_blocking set name='kk' where id=1;
3、第三个会话--Innotop工具分析
3.1、安装innotop工具
# yum -y install perl-TermReadKey.x86_64 perl-IO-Socket-SSL perl-DBI.x86_64 perl-DBD-MySQL.x86_64 \ perl-Digest-MD5 perl-ExtUtils-MakeMaker # wget -c https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-1.el7.x86_64.rpm # rpm -ivh percona-toolkit-3.0.13-1.el7.x86_64.rpm # git clone https://github.com/innotop/innotop # cd innotop # perl Makefile.PL # echo "export PATH=$PATH:/opt/innotop">>/etc/profile # source /etc/profile # innotop -h 172.26.151.70 -u root -pfswl@1234
3.2、观察
如下所示,Innotop工具很多情况下也不能定位到阻塞的语句(Blocking Query), 仅仅能获取一些锁相关信息
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
相关推荐
spurity 2020-11-10
emmm00 2020-11-17
王艺强 2020-11-17
aydh 2020-11-12
世樹 2020-11-11
zry 2020-11-11
URML 2020-11-11
yifangs 2020-10-13
Andrea0 2020-09-18
Ida 2020-09-16
ltd00 2020-09-12
tufeiax 2020-09-03
xjd0 2020-09-10
greatboylc 2020-09-10
adsadadaddadasda 2020-09-08
疯狂老司机 2020-09-08
CoderToy 2020-11-16
ribavnu 2020-11-16
bianruifeng 2020-11-16