美文网首页
mysql锁等待/死锁

mysql锁等待/死锁

作者: 逗比的一生 | 来源:发表于2023-07-11 14:40 被阅读0次

对于 5.7 版本,出现锁等待时,我们可以查看 information_schema 中的几张系统表来查询事务状态。

innodb_trx 当前运行的所有事务。
innodb_locks 当前出现的锁。
innodb_lock_waits 锁等待的对应关系

锁等待发生时 查看innodb_trx表可以看到所有事务
trx_state值为LOCK WAIT 则代表该事务处于等待状态

mysql> select * from information_schema.innodb_trx\G

# innodb_trx 字段值含义
trx_id:事务ID。
trx_state:事务状态,有以下几种状态:RUNNING、LOCK WAIT、ROLLING BACK 和 COMMITTING。
trx_started:事务开始时间。
trx_requested_lock_id:事务当前正在等待锁的标识,可以和 INNODB_LOCKS 表 JOIN 以得到更多详细信息。
trx_wait_started:事务开始等待的时间。
trx_weight:事务的权重。
trx_mysql_thread_id:事务线程 ID,可以和 PROCESSLIST 表 JOIN。
trx_query:事务正在执行的 SQL 语句。
trx_operation_state:事务当前操作状态。
trx_tables_in_use:当前事务执行的 SQL 中使用的表的个数。
trx_tables_locked:当前执行 SQL 的行锁数量。
trx_lock_structs:事务保留的锁数量。
trx_isolation_level:当前事务的隔离级别。

# sys.innodb_lock_waits 视图也可看到事务等待状况,且给出了杀链接的SQL
mysql> select * from sys.innodb_lock_waits\G

sys.innodb_lock_waits 视图整合了事务等待状况,同时给出杀掉堵塞源端的 kill 语句。不过是否要杀掉链接还是需要综合考虑的。


发生死锁后会选择一个事务进行回滚,想查明死锁原因,可以执行 show engine innodb status 来查看死锁日志,根据死锁日志,结合业务逻辑来进一步定位死锁原因。

在实际应用中,我们要尽量避免死锁现象的发生,可以从以下几个方面入手:

事务尽可能小,不要讲复杂逻辑放进一个事务里。
涉及多行记录时,约定不同事务以相同顺序访问。
业务中要及时提交或者回滚事务,可减少死锁产生的概率。
表要有合适的索引。
可尝试将隔离级别改为 RC 。

相关文章

  • Mysql - 死锁

    Mysql - 死锁 死锁,就是产生了循环等待链条,我等待你释放锁,你却等待我释放锁,我们都相互等待,谁也不释放自...

  • MySQL死锁分析

    什么是死锁 MySQL的死锁指的是两个事务互相等待的场景,这种循环等待理论上不会有尽头。比如事务A持有行1的锁,事...

  • 数据库_锁

    六、数据库锁1.mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?MySQL有三种锁的级别:页级、表级、...

  • 高性能Mysql笔记

    一、Mysql架构与历史 1、架构图 2、锁 表锁 行级锁 3、事务 死锁 Mysql中的事务 1

  • 乐观锁幂等性

    如何避免MySQL死锁: 思路: 1、 因为加锁而导致死锁, 所以放弃使用悲观锁方案, 改为乐观锁方案 2、 如果...

  • 8)MySQL死锁及解决方案

    前面我们了解了MySQL的锁类型,那么在使用锁之后,大概率会出现死锁的情况。 什么是死锁 死锁是并发系统中常见的问...

  • 线程同步中的死锁

    何为死锁 多线程各自持有不同的锁,并互相试图获取对方已持有的锁,导致无限等待的状况,称为死锁。比如: 避免死锁 避...

  • MySQL的锁

    一. MySQL的锁粒度 按锁的粒度分,MySQL的锁可以分为三类: 行级锁:加锁开销最大,且有可能出现死锁,但并...

  • Mysql | 锁——死锁

    当并发系统中不同线程出现循环资源依赖,涉及的线程都在等待别的线程释放资源时,就会导致这几个线程都进入无限等待的状态...

  • MySQL锁等待与死锁问题分析

    前言: 在 MySQL 运维过程中,锁等待和死锁问题是令各位 DBA 及开发同学非常头痛的事。出现此类问题会造成业...

网友评论

      本文标题:mysql锁等待/死锁

      本文链接:https://www.haomeiwen.com/subject/lbzyudtx.html