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 14 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
教你使用VS Code的MySQL扩展管理数据库的方法
Jan 22 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL导致索引失效的几种情况
Jun 25 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缓存技术的多种方法小结
2012/08/14 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP生成压缩文件实例
2015/02/07 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
python脚本内运行linux命令的方法
2015/07/02 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
Python常用外部指令执行代码实例
2020/11/05 Python
美国购车网站:TrueCar
2016/10/19 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
火山动力Java笔试题
2014/06/26 面试题
销售主管岗位职责范本
2014/02/14 职场文书
早读课迟到检讨书
2014/09/25 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
个人求职自荐信范文
2015/03/06 职场文书
学校捐款活动总结
2015/05/09 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
详解redis分布式锁的这些坑
2021/05/19 Redis
python 如何在list中找Topk的数值和索引
2021/05/20 Python