美文网首页
一个死锁场景

一个死锁场景

作者: pangzhaojie | 来源:发表于2019-05-22 14:52 被阅读0次

表结构

CREATE TABLE `t` (
  `id` int(11) NOT NULL,
  `c` int(11) DEFAULT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `c` (`c`)
) ENGINE=InnoDB;

表数据

insert into t values(0,0,0),(5,5,5),
(10,10,10),(15,15,15),(20,20,20),(25,25,25);

事务隔离级别

image.png

事务操作过程

image.png

死锁分析

  • session A 加了 next-key lock(5,10] 和间隙锁 (10,15);
  • session B 请求 next-key lock(5,10] ,进入锁等待;
  • session A 要再插入 (8,8,8) 这一行,出现死锁

疑问点

  • session B获取Next Key锁阻塞,此时有没有拿到5,10的间隙锁
  • 死锁的原因是因为获取锁要排队?session A请求的插入意向锁,和session B中等待获取的Next Key锁冲突,所以需要等待session B获取后释放,才能轮到session A获取这个锁,所以造成死锁

相关文章

  • bthread随记

    死锁触发场景

  • Android死锁的场景有哪些?

    常见的死锁的场景 下面分析几种常见的死锁形式: 锁顺序死锁 上述代码中,如果一个线程调用lockAtoB(),另一...

  • 一个死锁场景

    表结构 表数据 事务隔离级别 事务操作过程 死锁分析 session A 加了 next-key lock(5,1...

  • Java Concurrent 死锁

    前言 死锁是一个比较大的概念,在并发场景下的加锁行为都有可能产生死锁问题。在Java 并发编程中会有死锁,操作系统...

  • 并发insert on duplicate key update

    前言 数据库死锁问题,是一个老生常谈且很常见的问题,网上也有非常多对于各类死锁场景的解析和复现,但凡和死锁有关,无...

  • mysql死锁场景整理

    简述 本文死锁场景皆为工作中遇到(或同事遇到)并解决的死锁场景,写这篇文章的目的是整理和分享,欢迎指正和补充,本文...

  • 一个mysql死锁场景分析

    最近遇到一个mysql在RR级别下的死锁问题,感觉有点意思,研究了一下,做个记录。涉及知识点:共享锁、排他锁、意向...

  • log4j1死锁问题

    背景 听说log4j1在线上会出现死锁,现在我们来看看这个死锁是怎么产生的。 复现死锁场景 log4j.prope...

  • 说说GCD中的死锁

    本文主要举例说明GCD里的死锁场景,分析造成死锁的原因以及解决方案 在开始说GCD死锁之前,我们先了解一下GCD的...

  • 552,GCD的死锁(面试点:gcd死锁:一,主线程调用主线程。

    本文主要举例说明GCD里的死锁场景,分析造成死锁的原因以及解决方案 在开始说GCD死锁之前,我们先了解一下GCD的...

网友评论

      本文标题:一个死锁场景

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