首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql的规则下键锁定?

mysql的规则下键锁定?
EN

Stack Overflow用户
提问于 2019-10-14 10:38:34
回答 1查看 88关注 0票数 0

这是mysql的下一个密钥锁定问题。我有一张“空位”的桌子,它的声明是

代码语言:javascript
运行
复制
DROP TABLE IF EXISTS `gaptest`;
CREATE TABLE `gaptest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `var1` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `var1` (`var1`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of gaptest
-- ----------------------------
INSERT INTO `gaptest` VALUES ('1', '5');
INSERT INTO `gaptest` VALUES ('5', '10');
INSERT INTO `gaptest` VALUES ('30', '10');
INSERT INTO `gaptest` VALUES ('10', '20');
INSERT INTO `gaptest` VALUES ('15', '30');
INSERT INTO `gaptest` VALUES ('20', '40');
INSERT INTO `gaptest` VALUES ('40', '55');
INSERT INTO `gaptest` VALUES ('25', '60');

以下是我所做的

  1. In session1 i打开事务并执行“从gaptest中删除var1 =10;”
  2. 在session2中打开事务,首先执行"insert insert 9,20“,它阻塞了。当我执行"insert insert gaptest select 29,20“时,它没有被阻塞。

为什么第一条语句被阻止,第二条没有被阻止?

EN

回答 1

Stack Overflow用户

发布于 2020-07-29 02:41:15

在第1节中,有如下所示的下一个键锁:

代码语言:javascript
运行
复制
-- format by (var1, id)
((5, 1), (10, 5)]
((10, 5), (10, 30)]
((10,30), (20, 10)]

对于(20,9),它属于最后一个范围,因此它将被阻塞。对于(20,29),它超出了范围,所以它不会被阻挡。

您需要考虑var1id的范围。因此,对于var1=20,小于10的id将被阻塞,大于10的id将不会阻塞。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58375009

复制
相关文章

相似问题

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