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 相关文章推荐
Idea连接MySQL数据库出现中文乱码的问题
Apr 14 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
Mysql官方性能测试工具mysqlslap的使用简介
May 21 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 MySQL
Mysql排序的特性详情
Nov 01 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
mysql数据库隔离级别详解
Jun 16 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 MySQL
一文解答什么是MySQL的回表
Aug 05 MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
解决Mysql中的innoDB幻读问题
Apr 29 #MySQL
详解Mysq MVCC多版本的并发控制
详解Mysql事务并发(脏读、不可重复读、幻读)
MySQL 条件查询的常用操作
Apr 28 #MySQL
You might like
MYSQL环境变量设置方法
2007/01/15 PHP
精通php的十大要点(上)
2009/02/04 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
PHP6新特性分析
2016/03/03 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
js常见表单应用技巧
2008/01/09 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
python中import学习备忘笔记
2017/01/24 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python多任务之协程的使用详解
2019/08/26 Python
利用python实现AR教程
2019/11/20 Python
Pycharm修改python路径过程图解
2020/05/22 Python
Django url 路由匹配过程详解
2021/01/22 Python
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
黄金酒广告词
2014/03/21 职场文书
初一年级组工作总结
2015/08/12 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python