mysql加锁后怎么解除_Mysql查看死锁与解除死锁的深入讲解

前言

前段时间遇到了一个Mysql 死锁相关的问题,整理一下。

问题描述:Mysql 的修改语句似乎都没有生效,同时使用Mysql GUI 工具编辑字段的值时会弹出异常。

0f73c73c8e86e946bcb477179a115d16.png

什么是死锁

在解决Mysql 死锁的问题之前,还是先来了解一下什么是死锁。

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程。

死锁的表现

死锁的具体表现有两种:

Mysql 增改语句无法正常生效 使用Mysql GUI 工具编辑字段的值时,会出现异常。 如何避免死锁

阻止死锁的途径就是避免满足死锁条件的情况发生,为此我们在开发的过程中需要遵循如下原则:

1.尽量避免并发的执行涉及到修改数据的语句。

2.要求每一个事务一次就将所有要使用到的数据全部加锁,否则就不允许执行。

3.预先规定一个加锁顺序,所有的事务都必须按照这个顺序对数据执行封锁。如不同的过程在事务内部对对象的更新执行顺序应尽量保证一致。

查看死锁

Mysql 查询是否存在锁表有多种方式,这里只介绍一种最常用的。

1. 查看正在进行中的事务

SELECT * FROM information_schema.INNODB_TRX

可以看到 进程id为3175 的事务在锁住了,而另一个id为3173的事务正在执行,但是没有提交事务。

effab3fd9cefa6159bd748639e4e4430.png

2. 查看正在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

53af9f253553f9e042068a98e71a6aa2.png

3. 查看等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

9b905a2f8caa217c44751a20a6c7cbfc.png

4. 查询是否锁表

SHOW OPEN TABLES where In_use > 0;

0d4df1ac908c21ade569a95930b74cda.png

在发生死锁时,这几种方式都可以查询到和当前死锁相关的信息。

5. 查看最近死锁的日志

show engine innodb status

f6d6b875f9a0e446ec330da550eb5400.png

解除死锁

如果需要解除死锁,有一种最简单粗暴的方式,那就是找到进程id之后,直接干掉。

查看当前正在进行中的进程

show processlist

// 也可以使用

SELECT * FROM information_schema.INNODB_TRX;

这两个命令找出来的进程id 是同一个。

杀掉进程对应的进程 id

kill id

验证(kill后再看是否还有锁)

SHOW OPEN TABLES where In_use > 0;

参考链接

到此这篇关于Mysql查看死锁与解除死锁的文章就介绍到这了,更多相关Mysql查看死锁与解除死锁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql查询工具哪个好_一个比较实用的数据库查看管理工具

个人从业四年多,和数据库打交道不计其数,特别是在之前做企业级应用系统的时候,整天就是在业务、数据和程序之间穿梭,那个数据查的呀,平均每天有40% 左右的时间都在手工的写sql进行数据的查询。刚开始,通过数…

mysql运维机制_《MySQL运维内参》节选 | InnoDB日志管理机制(一)

引 子InnoDB 存储引擎是支持事务ACID特性的,它是以二十多年前IBM的一篇著名文章《ARIES:A Transaction Recovery Method Supporting Fine-Granularity Locking and PartialRollbacks Using Write-Ahead Logging》为理论基础,大多数关系型数据库的实现都是…

数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论

mysql的逻辑分层:连接层 服务层 引擎层 存储层引擎层主要分为两类:InnoDB、MyIsam(使用show engines;查看)InnoDB是事务优先的,会进行行锁,适合高并发操作MyIsam是性能优先的,进行表锁sql优化点:等待时间长…

检验int值在list中是否存在_R语言统计与绘图:卡方检验

卡方检验在计数资料中的应用,包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。选自:周支瑞老师下面分别介绍计数资料怎…

mysql in 多个字段_MySQL如何同时自增自减多个字段

“本文将带大家聊一下如何同时自增自减多个字段”前言最近小Q同学去面试了,然后就问了题目的问题,如何同时自增自减多个字段。小Q一时回答不出来,最终的结果就是回家等通知....关于这个问题咔咔来给小Q简单的进行解答一下。一、ThinkPHP框架实…

wxpython 调用子窗口_wxpython入门第一步(简单例子)

在这部分wxPython教程中,我们将创建一些简单的例子。简单的例子​ 我们从一个非常简单的例子开始。我们的第一个脚本将只显示一个小窗口。它不会做太多事情。我们将逐行分析这个脚本。# simple.pyimport wxapp wx.App()frame wx.Frame(None, )frame.Show()app.Mai…

orderd mysql_Oracle入门教程:leading vs ordered hint

odered hint 可以指示oracle 使用from 关键字后面的表的顺序进行join连接!cbo会优先按照from 后面的表的顺序来进行join,当统计leading hint 可以指示Oracle使用leading 中指定的表作为驱动表,比如 正常的访问计划如下SCOTT> select e.ename, hiredat…

mysql标识列从一开始_mysql中标识列是什么意思有什么用

标识列是什么?标识列又称为自增长列。含义:可以不用手动的插入值,系统提供默认的序列值特点:1、标识列必须和主键搭配吗?不一定,但要求是一个key2、一个表可以有几个标识列?至多一个&#xff01…

mysql 及时点还原_mysqlbinglog基于即时点还原

mysqlbinlog介绍要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。(mysql5.7开启binglog 时需要同时设置server-id否则无法启动)要想确定当前的二进制日志文件…

python mysql查表_python进阶(十、mysql:单表查询)

3.mysql数据库3.10 单表查询3.10.1. 简单查询查询在数据库中使用的频率是最高的:十次查询,一次增删改。1)建表2)插入数据3.10.1.1. 选择字段:selectselect 字段名1,字段名2…… from 表名 where 条件;3.10.1.2. 字段重命名(别名):…

python常见的数值运算符_第18 p,Python中各种常用的运算符,特别是增量运算符...

原标题:第18 p,Python中各种常用的运算符,特别是增量运算符大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第18篇文章,第二阶段的课程:Python基础知识:Python中各种常用的运算…

python画害羞的表情_用Python把你的朋友变成表情包

一、项目说明在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片。效果如下图所示:二、实现步骤导入朋友的照片(前景照片);处理…

.net md5 java 偏移量_C# java MD5加密方不一致问题

说来惭愧,做开发几年了,一直在吸取,今天也写写自已关于技术的一点点理解,不正之处,请大家多多指点。由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式,而现在需要切换到Java平台下&#xff0…

java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

最近在复习java,下学期要用,写这个练手. 技术较粗糙,见谅.代码里用的是这幅地图,根据实际情况更改,在addNode方法中这个是运行结果,起点和终点在 运行wrap(String qidian, String zhongdian) 时定义代码&a…

java xml opencv_Java中使用opencv

零、前言作为图像处理出身,不仅仅要会C图像处理、matlab图像处理、python图像处理、最起码也得会java图像处理,当然我最终还都用的是opencv这个机器视觉库了。今天简单介绍一下java中如何使用opencv。一、配置库(1)官网下载opencv,在opencv\b…

java实现table可编辑_动态渲染可编辑单元格的Table

一、问题描述问题是这样的,后台传了xArr [x1, x2,...,xn]和yArr [y1, y2, ..yn]两个数组,前端要渲染出表格并且可以填写每个单元格的值,然后按照一定数据结构保存并传给后台,并且再次获取这个数据结构和数组xArr、yArr可以自己渲…

java包裹邮费计算_GitHub - honghailiang/FreightSystem: 基于Java Swing编写的简易运费计算工具...

FreightSystem基于java Swing编写的运费计算系统初始化数据从excel中读取数据,转化为对象(只保存基础数据:序列号、始发站、目的站、省份、100kg以下(元/kg)、100kg以上(元/kg)、到货(元/kg)、自提(元/kg)、补贴里程、公路里程、单价(元/吨公里))并保存到…

java需求设计_JavaWeb期末设计---需求分析文档. stage1

影院活动管理系统—需求分析文档目录第2章 需求分析2.1 用户需求2.1.1 业务需求2.1.2 商业需求2.1.3 特殊需求2.2 可行性分析2.2.1 技术可行性2.2.2 经济可行性2.3 系统功能2.3.1 功能概述2.3.2 E-R图2.3.4 Domian logic2.3.5 系统框架图-------------------------------------…

selenium java po模式_selenium + java po模式

po模式大概介绍,大家也可以自己百度看看Page Object模式主要是将每个页面设计为一个类class,这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法,这样在写测试用例时可以通过调用页面类的方法和属性来获取页面元素和操…

java基础语法实例教程_Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作面向对象中的一些概念下表列出了 面向对象 编程中的一些概念名词说明对象对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有…