博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 锁的现象和解决
阅读量:6972 次
发布时间:2019-06-27

本文共 918 字,大约阅读时间需要 3 分钟。

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_LOCKSSELECT * 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%'

你可能感兴趣的文章
XE8_TPaintBox画
查看>>
你真的会玩SQL吗?冷落的Top和Apply
查看>>
文件中数组的最大值及其对应的最小下标
查看>>
简单的分页存储过程,Json格式日期转换为一般日期
查看>>
算24 (递归)
查看>>
python之dict
查看>>
Lua中的元表与元方法
查看>>
将银行读卡设备读取到的身份证头像Bitmap属性转换成路径
查看>>
iPhone5,发布的不仅仅是一部手机
查看>>
Vue路由参数设置可有可无
查看>>
codevs 3115 高精度练习--减法
查看>>
使用 Swoole 来加速你的 Laravel 应用
查看>>
9月15日学习内容整理:类的命名空间和组合
查看>>
SSD详解
查看>>
关系数据模型的数据结构及约束定义
查看>>
BFS(双向) HDOJ 3085 Nightmare Ⅱ
查看>>
二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换
查看>>
RecycleView的简单使用
查看>>
常用内置函数
查看>>
求空间一点到另外一点(如原点)的距离
查看>>