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 相关文章推荐
JDBC连接的六步实例代码(与mysql连接)
May 12 MySQL
MySQL 可扩展设计的基本原则
May 14 MySQL
Mysql文件存储图文详解
Jun 01 MySQL
Mysql中存储引擎的区别及比较
Jun 04 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
MySQL系列之三 基础篇
Jul 02 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL 数据 data 基本操作
May 04 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫