zoukankan      html  css  js  c++  java
  • MySQL 锁查询

    一、从视图查看

    查看进程
    SHOW PROCESSLIST; // 查看是否锁表 SHOW OPEN TABLES WHERE In_use > 0;

    1、查看当前的事务

    SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

    2、查看当前锁定的事务

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

    3、查看当前等锁的事务

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

    二、使用show查看

    1、查询是否锁表

    show OPEN TABLES where In_use > 0;

    2、查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)

    show processlist ;

    3、杀死进程id(就是上面命令的id列)

    kill 462540518 ;

    三、查看脚本

    1、脚本一

    SELECT
        TH.processlist_id,                                       -- 这个就是你要的 connection_id, 你可以 kill 这个,达到终止它的操作的目的
        TH.processlist_command as command,    -- 这个为 sleep,则表明操作结束了,但没有提交事务,也就是事务挂起了
        TIMESTAMPDIFF(second, TRX.trx_started, NOW()) as tx_duration, -- 事务已经开启多长时间了
        ESC.current_schema, ESC.sql_text          -- 这个不一定能查到,最后执行的 SQL(事务中有多个语句时,这个只是最后一个,江代表是产生锁的那个)
    FROM performance_schema.threads TH
        INNER JOIN information_schema.innodb_trx TRX
            ON TRX.trx_mysql_thread_id = TH.processlist_id
        LEFT JOIN performance_schema.events_statements_current ESC
            ON ESC.thread_id = TH.thread_id;

    2、脚本二

    select r.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread,

    r.trx_query waiting_query,b.trx_id blocking_trx_id,

    b.trx_mysql_thread_id blocking_thread,b.trx_query blocking_query

    from information_schema.innodb_lock_waits w

    inner join information_schema.innodb_trx b

    on b.trx_id = w.blocking_trx_id

    inner join information_schema.innodb_trx r

    on r.trx_id = w.requesting_trx_idG

  • 相关阅读:
    Java中的subList方法
    某同学工作之后的感悟
    存放80000000学生成绩的集合,怎么统计平均分性能高
    为了金秋那沉甸甸的麦穗,我绝不辜负春天
    subList?? subString???
    "爸妈没多大本事"……
    中秋节支付宝口令红包解析
    算法>动态规划(一) 小强斋
    数据结构>优先队列(堆) 小强斋
    算法>贪心算法 小强斋
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11867282.html
Copyright © 2011-2022 走看看