t_user表
创建存储过程 insert_user(IN c int(10));
CREATE PROCEDURE insert_user(IN c int(10))
BEGIN
DECLARE i INT DEFAULT 0 ;
REPEAT
SET i = i + 1 ;
INSERT INTO t_user (`name`, `addr`)VALUES("aaaaaaa", "bbbbbbb") ;
UNTIL i = c END REPEAT;
END
调用存储过程 Call pro_name(args);
-- MySQL默认为自动提交
SHOW VARIABLES LIKE '%autocommit%';
-- 设置当前会话不自动提交
SET SESSION autocommit=0;
SHOW VARIABLES LIKE '%autocommit%';
-- 新插入八千万行数据
CALL insert_user(80000000);
-- 提交
COMMIT;
-- 设置当前会话自动提交
SET SESSION autocommit=1;
SHOW VARIABLES LIKE '%autocommit%';
每插入10000000行数据要5 minutes 左右。
所以插入80000000行记录需要 40 minutes 左右。此次执行实际用了60 minutes。
以下为上述执行过程的统计信息
[SQL]-- MySQL默认为自动提交
SHOW VARIABLES LIKE '%autocommit%';
受影响的行: 0
时间: 0.001s
[SQL]
-- 设置当前会话不自动提交
SET SESSION autocommit=0;
受影响的行: 0
时间: 0.000s
[SQL]
SHOW VARIABLES LIKE '%autocommit%';
受影响的行: 0
时间: 0.001s
[SQL]
-- 新插入八千万行数据
CALL insert_user(80000000);
受影响的行: 1
时间: 3632.734s
[SQL]
-- 提交
COMMIT;
受影响的行: 0
时间: 0.295s
[SQL]
-- 设置当前会话自动提交
SET SESSION autocommit=1;
受影响的行: 0
时间: 0.000s
[SQL]
SHOW VARIABLES LIKE '%autocommit%';
受影响的行: 0
时间: 0.002s