小孩来了 2022-07-23 14:30 采纳率: 0%
浏览 37

mysql间隙锁失效?

想自己测试下间隙锁现象,于是就按照一些博客上的步骤操作,结果并没有出现什么间隙锁的现象,有谁遇到过吗?
下面是操作步骤:
CREATE TABLE test.user (
id int(11) NOT NULL,
name varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
age int(11) NULL DEFAULT NULL,
PRIMARY KEY (id) USING BTREE,
INDEX index_age(age) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
插入数据

1 xiaoming 12
3 xiaohong 20
5 laowang 36

开启两个事务

session1;
start transaction;
select * fro m yser where age=20; 在普通索引 age上加锁 按说会锁住 12,20 20,20 20,36区间

session2
start transaction;
insert into user values(null,"zhangsan",15);

结果session2中的insert语句应该阻塞才对 但是却执行成功了
另外间隙锁测参数已经是开启了

  • 写回答

1条回答 默认 最新

  • 木秀林 2022-07-24 08:51
    关注

    select * fro m yser where age=20
    是快照读,是不加锁的,应该加上share mode 或者 for update 去加(前提不是串行化的事务隔离)

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月23日

悬赏问题

  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题