iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql锁表原因及解决
  • 394
分享到

mysql锁表原因及解决

mysql数据库sql 2023-09-01 08:09:43 394人浏览 八月长安
摘要

Mysql锁表原因及解决 问题如图 锁表发生原因 锁表发生在 insert、update、delete中;锁表的原理是数据库使用独占式锁机制,当执行上面的语句时,对表进行锁住,直到发生co

Mysql表原因及解决

问题如图

在这里插入图片描述

锁表发生原因

  • 锁表发生在 insert、update、delete中;
  • 锁表的原理是数据库使用独占式锁机制,当执行上面的语句时,对表进行锁住,直到发生commit或者rollback或者退出数据库用户
  • 锁表的原因:
    • A程序执行了对table_1insert、update、delete,并还未commit时,B程序也对table_1进行insert、update、delete`时会发生资源正忙的异常,也就是锁表;
    • 锁表常发生与并发而不是并行(并行时,一个线程操作数据库时,另一个线程是能操作数据库的,cpu和i/o分配原则)
    • 锁表也发生在事务嵌套,外层事务对table_1进行了insert、update、delete内层事务(PROPAGATioN_REQUIRES_NEW)也对table_1进行了insert、update、delete,内层事务commit的时需要等待外层事务先commit释放资源(但是是不可能的),最终导致死锁(本次问题就是事务嵌套导致)。多查几次SELECT * FROM infORMation_schema.innodb_trx ;如果锁跟着业务结束(connect超时)锁没了,那么基本上可以确定是业务代码导致,需要分析业务代码。

mysql锁表解决

-- 找到超时的表,查询超时的sqlSELECT * FROM information_schema.innodb_trx ;-- 查看当前被使用的表,查询是否有锁表-- SHOW OPEN TABLES:列举在表缓存中当前被打开的非TEMPORARY表。-- In_use:表当前被查询使用的次数。如果该数为零,则表是打开的,但是当前没有被使用。show OPEN TABLES where In_use > 0;
-- 查询全局等待事务锁超时时间SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; -- 设置全局等待事务锁超时时间SET  GLOBAL innodb_lock_wait_timeout=100;  -- 查询当前会话等待事务锁超时时间SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';-- 查看进程id,然后用kill id杀掉进程show processlist;SELECT * FROM information_schema.PROCESSLIST;-- 查询正在执行的进程SELECT * FROM information_schema.PROCESSLIST where length(info) >0 ;-- 查看被锁住的SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;-- 等待锁定SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;-- innodb_locks表在8.0.13版本中由performance_schema.data_locks表所代替,innodb_lock_waits表则由performance_schema.data_lock_waits表代替-- 杀掉锁表进程kill 5601 

事务嵌套引起的死锁

这时候就不能简单的kill掉进程了,需要review代码,找出问题代码

来源地址:https://blog.csdn.net/wjy2460956668/article/details/129202022

您可能感兴趣的文档:

--结束END--

本文标题: mysql锁表原因及解决

本文链接: https://www.lsjlt.com/news/387902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql锁表原因及解决
    mysql锁表原因及解决 问题如图 锁表发生原因 锁表发生在 insert、update、delete中;锁表的原理是数据库使用独占式锁机制,当执行上面的语句时,对表进行锁住,直到发生co...
    99+
    2023-09-01
    mysql 数据库 sql
  • MySQL死锁的原因及解决方法
    这篇文章主要介绍“MySQL死锁的原因及解决方法”,在日常操作中,相信很多人在MySQL死锁的原因及解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL死锁的原因...
    99+
    2024-04-02
  • Oracle中表被锁的原因及解决方法有哪些?
    标题:Oracle中表被锁的原因及解决方法 在Oracle数据库中,表被锁是数据库操作中常见的问题之一。表锁定可能会导致数据库性能下降和应用程序无法正常运行。本文将介绍Oracle中表...
    99+
    2024-03-11
    编程 oracle 解决方法 表锁 sql语句 并发访问
  • 数据库锁表原因、排查、解决
    数据库锁表原因、排查、解决 一.场景场景1场景2 二.原因三.排查四.解决方案 一.场景 场景1 锁表通常发生在DML( insert 、update 、del...
    99+
    2023-09-06
    数据库 sql mysql
  • mysql锁表的原因有哪些
    这篇文章主要为大家展示了“mysql锁表的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql锁表的原因有哪些”这篇文章吧。 ...
    99+
    2024-04-02
  • Oracle用户被锁的原因及解决办法
    在登陆时被告知test用户被锁 1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nls_date_format='yyyy...
    99+
    2024-04-02
  • sql死锁的原因及解决方法是什么
    SQL死锁是指在多个并发事务中,每个事务都在等待其他事务所持有的资源,导致所有事务都无法继续执行的状态。死锁的原因主要有以下几种:1...
    99+
    2023-08-16
    sql
  • MySQL死锁产生的原因和解决方法
    前言 最近老顾经常碰到同事说,mysql又死锁了导致业务报错。今天我们就来聊聊死锁以及怎么解决 锁类型 mysql锁级别:页级、表级、行级 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:...
    99+
    2023-08-31
    mysql 数据库 java
  • 怎么排查mysql数据库锁表原因
    排查mysql数据库锁表原因的方法:通过mysql show processlist 命令检查mysql锁,代码:“SHOW PROCESSLIST”。(此命令只能显示前100条数据。)查看全部的数据输入:“SHOW FULL PROCES...
    99+
    2024-04-02
  • Oracle中表被锁的原因及处理方法
    Oracle中表被锁的原因及处理方法 在Oracle数据库中,表被锁是一种常见的现象,而造成表被锁的原因也有很多种。本文将探讨一些常见的表被锁的原因,并提供一些处理方法以及相关的代码示...
    99+
    2024-03-03
    处理方法 锁定原因 oracle表 sql语句
  • mysql死锁的原因和解决方法是什么
    这篇文章主要讲解了“mysql死锁的原因和解决方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql死锁的原因和解决方法是什么”吧! ...
    99+
    2024-04-02
  • 深入理解Oracle锁表原因分析
    深入理解Oracle锁表原因分析,需要具体代码示例 随着企业数据库规模的不断增长和复杂性的加深,数据库锁表问题逐渐成为数据库管理员以及开发人员需要面对和解决的重要挑战之一。在Oracl...
    99+
    2024-03-10
    分析 oracle 锁表原因 并发访问
  • Oracle常见死锁发生的原因以及解决方法
    一.删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖。这里列举一个对同一个资源的争抢造成死锁的实例。 CREATE ...
    99+
    2024-04-02
  • mysql锁表怎么解决
    mysql锁表的解决方法:在mysql执行以下sql语句解决。//查看进程id,然后用kill id杀掉进程show processlist;SELECT * FROM inform...
    99+
    2024-04-02
  • MySQL出现乱码的原因及解决方法
    本篇内容主要讲解“MySQL出现乱码的原因及解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL出现乱码的原因及解决方法”吧!MySQL出现乱码的原...
    99+
    2024-04-02
  • MySQL ERROR 1045出现的原因及怎么解决
    这篇文章主要介绍“MySQL ERROR 1045出现的原因及怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL ERROR 1045出现的原因...
    99+
    2023-07-02
  • MySQL主从延迟原因以及解决方案
    1.MySQL数据库主从同步延迟原理。    谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5....
    99+
    2024-04-02
  • Last_IO_Error: Fatal error:slave have equal MySQL Server UUIDs原因及解决
    最近在虚拟机上部署MySQL主从复制架构的时候,碰到了 "Last_IO_Error: Fatal error: The slave I/O thread stops because master and ...
    99+
    2024-04-02
  • Mysql报错:too many connections原因及解决方法
    原因是mysql连接数过多 解决方案: linux登录mysql:  mysql -u root -p; 查看mysql允许的最大连接数 show variables like '%max_connections%'; 查看这次mysql服...
    99+
    2023-09-03
    mysql 数据库
  • MySQL产生死锁原因分析讲解
    目录锁类型介绍死锁产生原因和示例1、产生原因2、产生示例案例一案例二案例三案例四案例五案例六锁类型介绍 MySQL 有三种锁的级别:页级、表级、行级 1 表级锁:开销小,加锁快;不...
    99+
    2022-12-16
    MySQL产生死锁原因 MySQL死锁 MySQL死锁处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作