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服务添加 iptables防火墙策略的方案
Apr 29 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
MySQL通过binlog恢复数据
May 27 MySQL
MySql开发之自动同步表结构
May 28 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
mysql 体系结构和存储引擎介绍
May 06 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
Js的MessageBox
2006/12/03 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python装饰器基础详解
2016/03/09 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
项目投资意向书
2014/04/01 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
企业党员个人自我评价
2014/09/20 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
财务部会计岗位职责
2015/02/03 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python