我正在做一個小測試。下面的代碼運行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秒!
這是一個比我預期的更大的差異。我不知道有什麼我不瞭解的東西嗎?