我正在做一个小测试。下面的代码运行3个随机查询1000倍(针对一个InnoDB表):运行3个DB查询1k次的事务处理速度比事务处理快两倍。正确?
delimiter //
create procedure dtest()
begin
declare v_max int;
declare v_counter int default 0;
declare holder int;
set v_max = 1000;
truncate table user;
start transaction;
while v_counter < v_max do
# random query
insert into user (username) values (CONCAT("user", floor(0 + (rand() * 65535))));
select count(*) from user into holder;
select count(*) from user where username = 'user' into holder;
set v_counter = v_counter + 1;
end while;
commit;
end //
我除去这两个语句跑上面的代码与在start transaction;
和commit;
,然后再次。
这个想法是我想看看它的运行速度是否比定义的事务慢。
我发现的是,第一个测试与的start transaction/commit
测试在7秒内运行。当我删除start transaction/commit
查询然后运行约15秒!
这是一个比我预期的更大的差异。我不知道有什么我不了解的东西吗?