MySQL中用Percona Toolkit监视死锁

php中文网
发布: 2016-06-07 17:35:44
原创
1181人浏览过

percona,是mysql的一个分支了,相信不少朋友都很熟悉了,而percona-toolkit是其推出的工具包,里面集合了很多不错的实用的mysql

percona,是mysql的一个分支了,相信不少朋友都很熟悉了,而percona-toolkit是其推出的工具包,里面集合了很多不错的实用的mysql维护工具包,今天开始学习下这个工具,首先看的是如何检查死锁

如果用传统的检查死锁的方法,可以使用比如:SHOW ENGINE INNODB STATUS,但这个方法查看的是最新的死锁,如果有大量的死锁的话,则不容易看得清楚了;

这个时候可以使用pt-deadlock-logger这个percona-toolkit工具包中的小工具了;

基本用法为:

pt-deadlock-logger u=user,p=password,h=host

也就是用户名密码和host了。在使用这个工具时,通常是运行一段时间去检查,

比如可以指定参数:--run-time 。此外还可以指定把结果保存到文件(--log参数)

或者保持到表格中去(--dest参数),下面看一个例子:

pt-deadlock-logger --create-dest-table --dest D=test,t=deadlocks u=root,h=127.0.0.1

NameGPT
NameGPT

免费的名称生成器,AI驱动在线生成企业名称及Logo

NameGPT 68
查看详情 NameGPT

这个时候默认建立一个test.deadlocks表,看下结构:

mysql> show create table test.deadlocks\G

*************************** 1. row ***************************

      Table: deadlocks
Create Table: CREATE TABLE `deadlocks` (
  `server` char(20) NOT NULL,
  `ts` datetime NOT NULL,
  `thread` int(10) unsigned NOT NULL,
  `txn_id` bigint(20) unsigned NOT NULL,
  `txn_time` smallint(5) unsigned NOT NULL,
  `user` char(16) NOT NULL,
  `hostname` char(20) NOT NULL,
  `ip` char(15) NOT NULL,
  `db` char(64) NOT NULL,
  `tbl` char(64) NOT NULL,
  `idx` char(64) NOT NULL,
  `lock_type` char(16) NOT NULL,
  `lock_mode` char(1) NOT NULL,
  `wait_hold` char(1) NOT NULL,
  `victim` tinyint(3) unsigned NOT NULL,
  `query` text NOT NULL,
  PRIMARY KEY (`server`,`ts`,`thread`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

  这个时候可以开始监测:
# pt-deadlock-logger --daemonize --run-time=3000 --dest D=test,t=deadlocks u=root,h=127.0.0.1
  然后最后死锁的结果保存在表中,如下:
mysql> select * from test.deadlocks\G
*************************** 1. row ***************************
  server: 127.0.0.1
      ts: 2012-09-17 12:13:36
  thread: 32
  txn_id: 0
txn_time: 113
    user: root
hostname: localhost
      ip:
      db: world
      tbl: City
      idx: Name
lock_type: RECORD
lock_mode: X
wait_hold: w
  victim: 0
    query: update City SET where
*************************** 2. row ***************************
  server: 127.0.0.1
      ts: 2012-09-17 12:13:36
  thread: 33
  txn_id: 0
txn_time: 110
    user: root
hostname: localhost
      ip:
      db: world
      tbl: City
      idx: Name
lock_type: RECORD
lock_mode: X
wait_hold: w
  victim: 1
    query: update City set where

  这里可以清晰看到有两条记录导致死锁了,而且锁的类型都看的很清楚了,提一下,
在mysql 5.6中,innodb_print_all_deadlocks这个设置可以看到死锁的情况了,很方便,参考#sysvar_innodb_print_all_deadlocks

Percona Toolkit 的详细介绍:请点这里
Percona Toolkit 的下载地址:请点这里

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号