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 10 MySQL
MySQL主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
MySQL 覆盖索引的优点
May 19 MySQL
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
Aug 23 MySQL
MySQL约束超详解
Sep 04 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
MySQL如何使备份得数据保持一致
May 02 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
JavaScript知识点整理
2015/12/09 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
师范生实习自我鉴定
2013/11/01 职场文书
学校万圣节活动方案
2014/02/13 职场文书
新学期开学标语2015
2015/07/16 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
Python实现简单得递归下降Parser
2022/05/02 Python