当前位置: 首页 > 知识库问答 >
问题:

这种僵局是如何发生的?

郑富
2023-03-14

最近我在处理一个SQL问题,我有两个事务,事务a首先获得了Next-Key锁,事务B试图获得相同的锁,所以它在等待,然后事务a试图获得插入意图锁,所以死锁发生了。但我很困惑为什么会发生这种情况?

CREATE TABLE `changeset` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT',    
  `userId` int(10) NOT NULL COMMENT,    
  `documentId` varchar(20) NOT NULL,    
  `memberId` bigint(13) NOT NULL,    
  `createTime` bigint(13) NOT NULL,    
  `version` bigint(13) NOT NULL COMMENT,    
  `changesets` mediumtext,    
  PRIMARY KEY (`id`),    
  UNIQUE KEY `uniq_documentId_version` (`documentId`,`version`) USING BTREE    
) ENGINE=InnoDB AUTO_INCREMENT=85771623 DEFAULT CHARSET=utf8

(一)交易:

从变更集选择*,其中documentId='7oo5c_v'和version>=13for update

(1)等待授予此锁:

记录锁定空间id 107页第15 n位704索引uniq_documentId_version表测试更改集trx id 22640锁定模式X等待

6锁结构,堆大小1136,4行锁,撤消日志条目1

MySQL线程id 212、OS线程句柄123145561657344、查询id 6210本地主机根更新插入变更集值(0、9、'7OO5C_V'、814、1、13、'X')

(2)保持锁:

1:兰8;十六进制800000000000000000;asc;

2:伦4;十六进制051CBEF7;asc;

(2)等待授予此锁:

回滚事务(1)

共有1个答案

华永新
2023-03-14

你在你的选择中使用过“(nolock)”吗?

Select * From Table with (nolock)
 类似资料:
  • 本文向大家介绍jQuery如何防止这种冒泡事件发生,包括了jQuery如何防止这种冒泡事件发生的使用技巧和注意事项,需要的朋友参考一下 冒泡事件就是点击子节点,事件会向上传递,最后触发父节点,祖先节点的点击事件。 html代码部分: jQuery代码如下: 当点击span时,会触发div与body 的点击事件。点击div时会触发body的点击事件。 如何防止这种冒泡事件发生呢?修改如下:     

  • 三个元素 前两个居中 第三个靠右显示

  • 我试图更多地了解Go的通道和goroutine,所以我决定制作一个小程序,从对象读取的文件中计算单词: 现在,在我发现的大多数示例中,和通道都将被缓冲,比如。但是,在运行这段代码之后,我的程序仍然存在一个错误消息。 基本上,我认为我需要两个通道:一个通道将文件中的行与goroutine通信(因为它可以是任意大小的,所以我不认为我需要在函数调用中通知大小);另一个通道将从goroutine收集结果,

  • 这种级联是怎么做的 仅有一级的情况下也可以选中

  • 问题内容: 这是我正在使用的Golang程序,目的只是为了使我的概念正确。当我运行程序时,它陷入了僵局,我不明白为什么?请任何人指出出了什么问题? 输出为: 问题答案: 问题是您要将传递给goroutines 的副本,而不是引用(即指针): 另外,由于是全局变量,您可以完全删除该参数: