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中的主键与事务
May 27 MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
Mar 03 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
一个好用的分页函数
2006/11/16 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
Symfony的安装和配置方法
2016/03/17 PHP
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
Python多进程同步简单实现代码
2016/04/27 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
python之消除前缀重命名的方法
2018/10/21 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
附答案的Java面试题
2012/11/19 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
先进工作者申报材料
2014/12/23 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
民事起诉书范本
2015/05/19 职场文书
离婚被告答辩状
2015/05/22 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python