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 Router的安装部署
Apr 24 MySQL
MySQL 数据类型选择原则
May 27 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MySQL数据库 任意ip连接方法
May 20 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
php计算函数执行时间的方法
2015/03/20 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
总结python实现父类调用两种方法的不同
2017/01/15 Python
python一键升级所有pip package的方法
2017/01/16 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
animation和transition的区别
2020/10/12 HTML / CSS
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
Java编程面试题
2016/04/04 面试题
物理力学求职信
2014/02/18 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
计算机实训报告总结
2014/11/05 职场文书
社会实践单位意见
2015/06/05 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript