使用mysql存储过程快速插入百万mysql测试数据
建表
用户表CREATE TABLE `user` (
`id` BIGINT (20),
`name` VARCHAR(20)
)ENGINE=INNODB;
日志表
CREATE TABLE `log` (
`id` BIGINT (20),
`msg` VARCHAR(20)
)ENGINE=INNODB;
在mysql控制台执行
1.建立存储过程
DELIMITER $$ USE `tiantian`$$ DROP PROCEDURE IF EXISTS `pro_test_data`$$ CREATE DEFINER=`dev_user`@`%` PROCEDURE `pro_test_data`( pos_begin INT,pos_end INT) BEGIN DECLARE i INT; SET i=pos_begin; SET AUTOCOMMIT=0; WHILE i>=pos_begin && i<= pos_end DO INSERT INTO tiantian.`user` (`id`, `name`) VALUES(i,"admin"); SET i=i + 1; # 接下来判断20W一批次就commit一回。 IF MOD(i,200000)<=0 THEN INSERT INTO log(id,msg)VALUES(i,"begin to commmit a group insert sql data."); COMMIT; END IF; END WHILE; END$$ DELIMITER ;
2.优化存储过程
# 录入数据的时候,不写入binlog,加快数据录入
set sql_log_bin=0; call tiantian.pro_test_data(0,100000000); Query OK, 1 row affected (14.51 sec)
结果仅需要14秒
关联文章 :
php操作mysql迅速插入上百万数据
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: MySQL批量插入测试数据
- 下一篇: URLSession解决断点续传问题。