ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql8.0查看锁信息

2020-04-24 18:56:51  阅读:1098  来源: 互联网

标签:locked 查看 信息 id trx waiting mysql8.0 blocking schema


【0】核心表

  sys.`innodb_lock_waits`

  performance_schema.events_statements_history

  performance_schema.data_locks

  performance_schema.data_locks_wait

【1】查看锁信息

  performance_schema.data_locks

  performance_schema.data_locks_wait

线上mysql版本为8.0.11,对于最近的几个版本越来越像Orale了,有了较为丰富的系统字典,也可以查看系统的等待事件,现在线上出现被锁语句的情况也可以通过数据字典直接查询出来了,在此记录下以供参考。

首先查看系统锁情况,下面这条语句可以看到持有锁的线程以及线程ID,这里需要注意下,session_id也就是show processlist查询出来的链接ID,在这个表里表现为PID,同时该表也记录了trx_id,最后还给出了解决方案也就是如何kill持有锁的进程。

  

 

 

 
mysql> SELECT * FROM sys.`innodb_lock_waits` \G
 
*************************** 1. row ***************************
 
wait_started: 2019-01-28 14:27:03
 
wait_age: 00:00:03
 
wait_age_secs: 3
 
locked_table: `test`.`t`
 
locked_table_schema: test
 
locked_table_name: t
 
locked_table_partition: NULL
 
locked_table_subpartition: NULL
 
locked_index: GEN_CLUST_INDEX
 
locked_type: RECORD
 
waiting_trx_id: 19758723
 
waiting_trx_started: 2019-01-28 14:27:03
 
waiting_trx_age: 00:00:03
 
waiting_trx_rows_locked: 1
 
waiting_trx_rows_modified: 0
 
waiting_pid: 4202
 
waiting_query: update t set id=8
 
waiting_lock_id: 19758723:4998:4:2
 
waiting_lock_mode: X
 
blocking_trx_id: 19748728
 
blocking_pid: 4200
 
blocking_query: NULL
 
blocking_lock_id: 19748728:4998:4:2
 
blocking_lock_mode: X
 
blocking_trx_started: 2019-01-28 10:58:27
 
blocking_trx_age: 03:28:39
 
blocking_trx_rows_locked: 2
 
blocking_trx_rows_modified: 1
 
sql_kill_blocking_query: KILL QUERY 4200
 
sql_kill_blocking_connection: KILL 4200
 
1 row in set (0.02 sec

 

【2】查看当前被锁的语句

 
##等待锁的语句
 
SELECT * FROM performance_schema.events_statements_history WHERE thread_id IN(
 
SELECT b.`THREAD_ID` FROM sys.`innodb_lock_waits` AS a , performance_schema.threads AS b
 
WHERE a.waiting_pid = b.`PROCESSLIST_ID`)
 
ORDER BY timer_start ASC;

 

 

【3】看持有锁的语句

可以通过如下方式

##持有锁的语句
 
SELECT * FROM performance_schema.events_statements_history WHERE thread_id IN(
 
SELECT b.`THREAD_ID` FROM sys.`innodb_lock_waits` AS a , performance_schema.threads AS b
 
WHERE a.`blocking_pid` = b.`PROCESSLIST_ID`)
 
ORDER BY timer_start ASC;

 

 

大部分转自:https://www.pianshen.com/article/3307195897/

标签:locked,查看,信息,id,trx,waiting,mysql8.0,blocking,schema
来源: https://www.cnblogs.com/gered/p/12769367.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有