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
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL数据库压缩版本安装与配置详细教程
May 21 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
带你学习MySQL执行计划
May 31 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
php简单提示框alert封装函数
2010/08/08 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
解析Python中的异常处理
2015/04/28 Python
基于Python闭包及其作用域详解
2017/08/28 Python
softmax及python实现过程解析
2019/09/30 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
python中time、datetime模块的使用
2020/12/14 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
解决方案设计综合面试题
2015/08/31 面试题
上班玩游戏检讨书
2014/02/07 职场文书
财务人员担保书
2014/05/13 职场文书
师范类求职信
2014/06/21 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
总账会计岗位职责
2015/04/02 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python