• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql顶用percona-toolkit监视死锁

mysql 搞代码 7年前 (2018-06-04) 185次浏览 已收录 0个评论

mysql中用percona-toolkit监视死锁
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
  这个时候默认建立一个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 name=’New york2′ where name=’New York’
*************************** 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 Name=’Seattle2′ where name=’Seattle’

  这里可以清晰看到有两条记录导致死锁了,而且锁的类型都看的很清楚了,提一下,
在mysql 5.6中,innodb_print_all_deadlocks这个设置可以看到死锁的情况了,很方便,参考http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_print_all_deadlocks


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql顶用percona-toolkit监视死锁
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址