• 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

  • 相关阅读:
    h5混合开发好用的下拉刷新插件
    设置窗体可以使用鼠标拖动大小 通过
    C# 使用System.Data.OleDb;避免oracle中文乱码问题
    C# 开启一个新进程并为新进程设置工作目录
    WPF窗体程序入口 自定义窗体启动页面
    WorkFlow WF如何为一个集合赋值
    第三方框架的使用
    AppIcon应用图标 and Launchimage启动图标的制作
    在didSelectRowAtIndexPath 里面取cell的方法
    iOS 开发技术体系
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11867282.html
Copyright © 2020-2023  润新知