开发者

mysql查询锁表方式

开发者 https://www.devze.com 2024-09-21 09:03 出处:网络 作者: huanhuan_m1
目录mysql如何查询锁表1.查看表是否被锁2.查看表被锁状态和结束死锁步骤3.mysql查询锁表指令速查总结mysql如何查询锁表
目录
  • mysql如何查询锁表
    • 1.查看表是否被锁
    • 2.查看表被锁状态和结束死锁步骤
    • 3.mysql查询锁表指令速查
  • 总结

    mysql如何查询锁表

    今天在做数据更新的时候,发现表中编程客栈数据量不大,但是更新语句执行很久都没成功,经过查询后发现是表锁死导致的,本文记录一下锁表解决步骤:

    1.查看www.devze.com表是否被锁

    (1)直接在mysql命令行执行:show engine innodb status。

    (2)查看造成死锁的sql语句,分析索引情况,然后优化sql。

    (3)然后show processlist,查看造成死锁占用时间长的sql语句。

    (4)show status like '%lock%'。

    2.查看表被锁状态和结束死锁步骤

    (1)查看表被锁状态:

    show OPEN TABLES where In_use > 0; 
    这个语句记录当前锁表状态

    (2)查询进程:

    • show processlist查询表被锁进程
    • 查询到相应进程killid

    (3)分析锁表的SQL:

    • 分析相应SQL,给表加索引,
    • 常用字段加索引,表关联字段加索引

    (4)查看正在锁的事物:

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS

    (5)查看等待锁的事物:

    SELECT * FROM INFORMATION_SCHEMA.INNOkSvvAIUHDB_LOCK_WAITS

    3.myjavascriptsql查询锁表指令速查

    (1)查看当前锁超时时间

    show variables like 'innodb_lock_wait_timeout';

    (2)查看全局锁超时时间

    SHOW GLOBAL VARIABLES LIKE 'innodb_lpythonock_wait_timeout';

    (3)更改当前锁超时时间为120秒

    SET innodb_lock_wait_timeout=120;

    (4)更改全局锁超时时间为120秒

    SET GLOBAL innodb_lock_wait_timeout=120;

    (5)查看锁情况

    show full processlist;

    mysql查询锁表方式

    (6)杀死锁的命令

    KILL 具体的id

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号