前提:可以通过top命令查看cpu :sys wait 高步高
<>1.查看有木有锁等待
mysql> show status like 'innodb_row_lock%'; +-------------------------------+--
-----+ | Variable_name | Value | +-------------------------------+-------+ |
Innodb_row_lock_current_waits| 0 | 当前锁的个数 | Innodb_row_lock_time | 0 | |
Innodb_row_lock_time_avg| 0 | | Innodb_row_lock_time_max | 0 | |
Innodb_row_lock_waits| 0 | 历史一共产生锁的个数 +-------------------------------+-------+
<>2. 查找锁阻塞的语句
mysql> use information_schema Reading table information for completion of
table and column names You can turn off this feature to get a quicker startup
with-A Database changed mysql> select * from innodb_trx where trx_state='lock
wait'; Empty set (0.00 sec)
<>3. 查找锁源
select * from sys.innodb_lock_waits;
<>4.通过以上可以查找到连接层的id,再通过连接层的id找到锁源sql的id
select * from performance_schema.thread where processlist_id=xxx;
<>5.通过sql的id 找到sql
select * from performance_schema where event_statement_current where thread_id
=xx; select * from performance_schema where event_statement_history where
thread_id =xx
<>6 死锁查看
show status like '%deadlock%'; 可以打开死锁记录参数,记录到错误日志中