数据库锁的排查
第1章 锁问题的排查步骤
1.1 第一个里程:先查看是不是有锁等待
show status like ‘innodb_row_lock%‘; 关注的信息 Innodb_row_lock_current_waits: 当前有多少锁等待 Innodb_row_lock_waits: 一共发生多少个锁等待(自打数据库启动起来,发生过多少锁等待!相当于一个计数器,重启以后会重新计数)
1.2 第二个里程:查看锁源,谁锁的我
select locked_table,locked_type,waiting_trx_id,waiting_pid,waiting_query,waiting_lock_mode,blocking_trx_id,blocking_pid,sql_kill_blocking_connection from sys.innodb_lock_waits\G; -参数说明 locked_table:产生锁等待的表 locked_type:锁的类型(RECORD,gaplock,nextlock) waiting_trx_id: 等待的事物的ID waiting_pid: 等待事物的连接线程ID waiting_query: 等待事物的语句 waiting_lock_mode:等待锁的类型(X,S) blocking_trx_id: 锁源的事物ID blocking_pid: 锁源的事物连接线程ID sql_kill_blocking_connection: 处理建议
1.3 第三个里程:根据锁源的pid,找到锁源SQL的线程ID
select thread_id,name,processlist_id from performance_schema.threads where processlist_id=4; 这一步得到在SQL层,执行SQL语句的thread_id=29
1.4 第四个里程:根据锁源的SQL线程的ID,找到锁源的SQL语句
select thread_id,event_name,sql_text from performance_schema.`events_statements_current` where thread_id=29; 把得到的语句丢给开发
相关推荐
CoderToy 2020-11-16
技术之博大精深 2020-10-16
emmm00 2020-11-17
bianruifeng 2020-11-16
云中舞步 2020-11-12
世樹 2020-11-11
暗夜之城 2020-11-11
张荣珍 2020-11-12
amienshxq 2020-11-14
ASoc 2020-11-14
yungpheng 2020-10-19
loveyouluobin 2020-09-29
尘封飞扬 2020-09-29
Coder技术文摘 2020-09-29
lbyd0 2020-11-17
BigYellow 2020-11-16
sushuanglei 2020-11-12
我心似明月 2020-11-09