ITPub博客

首页 > 数据库 > 数据库开发技术 > MySQL里那些“一眼bug”的案例们(二)

MySQL里那些“一眼bug”的案例们(二)

原创 数据库开发技术 作者:丁奇3306 时间:2024-08-14 10:53:20 0 删除 编辑

先在8.0.39复现一下这个bug。

 CREATE TABLE `t` (`id` int(11) NOT NULL,`c` int(11) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB;
insert into t values(1,1),(2,2),(3,3),(4,4);
//构造小表,表里只有4行
delimiter ;;create procedure udata3()begin  declare i int;  set i=1;  while(i<=50000) do    update t set c=c+1 where id=3;    set i=i+1;  end while;end;;delimiter ;//准备一个存储过程,对id=3这一行做5万次更新


session1 session2

begin;

select * from t where id=4;



call udata3();

//调用存储过程,把id=3这一行的undo 撑起来    ‍

select * from t limit 1;

//耗时1秒,太慢了


因为id=3这一行要满足RR隔离级别,需要读大量的undolog,如果读到id=3这一行,1秒是合理的。
但是这个语句明明只需要limit1,犯不着读到id=3,本应该很快的。

那这是个bug还是feature呢?
为了把后路堵掉,拿5.6版本对比一下, 很快。

select * from t limit 1;//1 row in set(0.00 sec)

原文作者:丁奇3306;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2024-08-07

  • 博文量
    104
  • 访问量
    44852