我想测试一个插入约100,000个数据的场景,发现如果我将VARIABLES autocommit设置为0并执行存储过程1,然后将autocommit重置为1,则只需要0.2秒;但是,如果我从存储过程1中提取循环作为存储过程2,并执行10000次,则大约需要26秒,因此即使自动提交功能已关闭,每次调用存储过程2时,数据库仍会提交。为什么会发生?非常感谢您的回答。
存储过程1:
DECLARE i INT DEFAULT 0;
SET i=0;
WHILE i<10000 DO
INSERT INTO `test_table` ( `objectType`, `addedDate`, `editedDate`)
VALUES ('task','2017-11-17 15:44:23', '2017-11-17 15:44:23');
SET i=i+1;
END WHILE;
存储过程2:调用此sp 10000次
INSERT INTO `test_table` ( `objectType`, `addedDate`, `editedDate`)
VALUES ('task','2017-11-17 15:44:23', '2017-11-17 15:44:23');
autocommit:OFF