能用网站做微信小程序,知名企业网站人才招聘情况如何,监控摄像头做斗鱼直播网站,qq群推广引流免费网站查看mysql的查看死锁的方式很多#xff0c;但很多时候我们普通开发者的权限比较低#xff0c;无法执行某命令。比如本次就准备使用
SHOW ENGINE INNODB STATUS;命令#xff0c;但客户端提示权限不够。后来本人找到了另一条低权限的命令
show full PROCESSLIST;但是show fu…查看mysql的查看死锁的方式很多但很多时候我们普通开发者的权限比较低无法执行某命令。比如本次就准备使用
SHOW ENGINE INNODB STATUS;命令但客户端提示权限不够。后来本人找到了另一条低权限的命令
show full PROCESSLIST;但是show full PROCESSLIST; 这个命令的输出信息太多了我们公司很多个库都部署在同一个mysql实例中所以其他库的进程信息也输出到控制台了。在当我们登录mysql客户端后没办法使用linux平台的grep这些正则过滤命令要从这么多的输出信息中找出我们关心的数据有点头大。经过我的九牛二虎之力终于发现了一个快捷方式它不需要进入到mysql客户端内部直接在linux 的shell环境中。
mysql -P {port} -u {user} -p{password} -h {host} {dbname} -e SHOW full PROCESSLIST; ~/proccess-info.txt其中{port}是mysql服务的端口{user}是用户名 {password} 是此用户的密码(注意这里的密码和前面的-p是挨着一起的两者间没有空格), {host} 是mysql服务器的ip或主机名 ~/proccess-info.txt 是输出的文件名 此时将mysql的进程信息输出到mysql 你就可以使用grep命令过滤出你需要的死锁信息了
cat ~/proccess-info.txt | grep {dbname} | grep Locked
第一行就是死锁的线程id,然后就可以在mysql的客户端中使用kill命令杀掉这个线程 注意是mysql的客户端中使用kill不是linux的shell终端中linux的kill命令只能杀进程而无法杀线程这里输出的这个390033是mysql的一个线程id只能在mysql的客户端中起作用 当然上面的两步查找死锁线程可以合成一步处理
mysql -P {port} -u {user} -p{password} -h {host} {dbname} -e SHOW full PROCESSLIST; | grep {dbname} | grep Locked 另外我们也可以查看慢sql通过sort查看耗时较长的sql
cat ~/draft/mysql_proc.txt | grep {dbname} | sed s/\t/,/g | sort -t, -k6,6nr | head -n 10其中-k6,6nr表示对第6列数字进行降序排序第6列式耗时Time字段