首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这种僵局将如何发生?

这种僵局将如何发生?
EN

Stack Overflow用户
提问于 2018-12-29 02:36:55
回答 1查看 118关注 0票数 0

最近我正在处理一个SQL问题,我有两个事务,事务A首先得到了下一个密钥锁,而事务B试图获得相同的锁,所以它在等待,然后事务A试图获得插入意图锁,因此出现了死锁。但我很困惑为什么会发生这种事?

这是我的桌子结构:

代码语言:javascript
复制
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

下面是我的死锁日志:

(1)交易: 事务22640,活动66秒启动索引读取 使用中的mysql表1,锁定1 锁等待2锁结构,堆大小1136,1行锁 MySQL线程id 209,OS线程句柄123145559986176,查询id 6204本地主机根发送数据 select * from changeset where documentId = '7oO5C_v' and version >= 13 for update (1)等候批出该锁: 记录锁空间id 107页编号15 n位704索引uniq_documentId_version of table test.changeset trx id 22640 lock_mode x等待 记录锁,堆编号2物理记录: n_fields 3;紧凑格式;信息位0 0: len 7;Hex3976735431644a;asc 9vsT1dJ; 1: len 8;十六进制8000000000000000; 2: len 4;Hex051Cbef7; (2)交易: 事务22639,活动95秒插入 使用中的mysql表1,锁定1 6锁结构,堆大小1136,4行锁,撤消日志条目1 MySQL线程id 212,OS线程句柄123145561657344,查询id 6210本地主机根更新insert into changeset values (0, 9, '7oO5C_v', 814, 1, 13, 'x') (2)持有锁(S): 记录锁空间id 107页编号15 n位704索引uniq_documentId_version of table test.changeset trx id 22639 lock_mode x 记录锁,堆编号2物理记录: n_fields 3;紧凑格式;信息位0 0: len 7;Hex3976735431644a;asc 9vsT1dJ; 1: len 8;十六进制8000000000000000; 2: len 4;Hex051Cbef7; (2)等候批出该锁: 记录锁空间id 107页编号15n位704索引表uniq_documentId_version test.changeset trx id 22639 lock_mode x锁定空白前插入意图等待 记录锁,堆编号2物理记录: n_fields 3;紧凑格式;信息位0 0: len 7;Hex3976735431644a;asc 9vsT1dJ; 1: len 8;十六进制8000000000000000; 2: len 4;Hex051Cbef7; 我们回滚交易(1)

EN

回答 1

Stack Overflow用户

发布于 2018-12-29 07:26:10

你在你的选择中使用了"(nolock)“吗?

代码语言:javascript
复制
Select * From Table with (nolock)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53966241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档