MySQL 执行数据库更新update操作的时候数据库卡死了


Posted in MySQL onMay 02, 2022

执行数据库更新update操作的时候数据库卡死了

问题分析

一般都是数据库事务未提交,导致update或者delete卡死。

解决办法

  1. 在执行完更新或删除后,记得将事务提交commit;
  2. 找到数据库客户端,执行commit操作。

如果还不行。 那么应该是数据库在执行数据操作失败 or 事务未提交 之后,将需要执行的sql语句锁死了。

过程复现和解决

通过如下命令查看数据库的自动提交状态

show variables like 'autocommit';

通过SQL设置数据库自动自动提交为关闭

-- on为开启,off为关闭
set autocommit=off;
-- 或者1为开启,0为关闭
set autocommit=0;

表中数据如下:
MySQL 执行数据库更新update操作的时候数据库卡死了
打开两个窗口分别执行update操作

update car set color ='银色' where id = 1;
update car set color ='红色' where id = 1;

查询正在执行的事务:

SELECT * FROM information_schema.INNODB_TRX;

MySQL 执行数据库更新update操作的时候数据库卡死了
根据图中事务的线程ID(trx_mysql_thread_id)可以看出对应的mysql 线程:一个1084 (update正在等待锁)另一个是1089(update 正在执行 没有提交事务)

可以使用mysql命令杀掉线程:kill 线程id

kill 1089;

期间如果并未杀掉持有锁的线程:则第二个update语句会提示等待锁超时。
MySQL 执行数据库更新update操作的时候数据库卡死了
相关命令:

-- 查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 

-- 查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
-- 查询mysql数据库中存在的进程
select * from information_schema.`PROCESSLIST`(show processlist;)

扩展

oracle的操作方式:

  1. 查询锁定记录
SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;
  1. 删除锁定记录
ALTER system KILL session 'SID,serial#';

Tags in this post...

MySQL 相关文章推荐
MySQL表的增删改查(基础)
Apr 05 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
一文搞懂MySQL索引页结构
Feb 28 MySQL
Mysql外键约束的创建与删除的使用
Mar 03 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL8.0 Undo Tablespace管理详解
Jun 16 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
Dec 24 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
php win下Socket方式发邮件类
2009/08/21 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
三下乡活动方案
2014/01/31 职场文书
趣味比赛活动方案
2014/02/15 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
万里长城导游词
2015/01/30 职场文书
学校教学工作总结2015
2015/05/19 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书