• mysql 锁的现象和解决


    2018-12-3 14:43:11 星期一

    数据库锁了的现象:

    一个进程进程一直在尝试更新, 而且杀不掉, 重启mysql以后还是会有;

    一个update语句执行了很久;

    写的业务都不可以, 查询也很慢

    原因:

    可能是事务没有提交/结束

    比如, 一个事务开始了, 但是中途调用的其他方法除了错误, 或者方法不存在等导致事务一直没有结束

    这里列出来找锁相关的SQL

    1 show status like 'innodb_row_lock%';
    2 show processlist;
    3 show status like 'table_locks%';
    4 show OPEN TABLES where In_use > 0;

     查询当前执行中的事务

    select * from information_schema.innodb_trx;
    SELECT * FROM information_schema.INNODB_LOCKS
    SELECT * FROM information_schema.INNODB_LOCK_waits

    参考1: https://blog.csdn.net/m0_37827567/article/details/82979767

    "

    不要盲目重启! 重启MySQL后进程消失但锁依然存在!
    重启MySQL后进程消失但锁依然存在,因为回滚还要继续,这是mysql对数据的保护机制

    ...

    结论: 时间过长的update、delete等语句在kill之后会进行回滚操作,会锁表,经常有人更换不同方式对大数据进行修改删除,然而盲目的杀死正在长时间运行的进程后并不能马上对表进行新的操作,后果只能是等待之前的操作回滚结束,本想用更快的方式操作表结果得不偿失,所以还是建议选择好对表修改操作方式然后一次运行,不再修改。

    "

    参考2 :  https://blog.csdn.net/e421083458/article/details/38342051

    show full processlist; 这个命令中最关键的就是state列

    show status;

    SHOW VARIABLES LIKE '%timeout%'

  • 相关阅读:
    multiprocessing 源码解析 更新中......
    loadrunner 更新中......
    Java IO
    echarts水球图小数点不显示问题+组件默认值
    双柱表格组件
    表格生成后修改echarts图表样式
    vue中引入单张图片+两张壁纸手动切换
    配置全局组件
    vue使用babel-plugin-import按需引入Ant Design View + babel-plugin-component按需引入element-ui
    vue深浅拷贝的思索
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/10058408.html
Copyright © 2020-2023  润新知