一开始我用存储过程批量插入100万条数据的时候,用了几个小时都还没有插完,这让我十分郁闷。于是我想应该会有解决办法吧
我存储过程sql代码如下:
delimiter #
create PROCEDURE test()
BEGIN
DECLARE i int DEFAULT 1;
while i<=1000000 DO
insert into book VALUES(null,'java从入门到放弃','1','zx',99);
set i=i+1;
end while;
commit;
end #
call test()
后来在网上找到了解决办法,将MySQL的1个参数:innodb_flush_log_at_trx_commit,1改为了0(修改方法,可以直接修改my.ini(windows)/my.cnf(linux)中的对应参数
设置后重启mysql,再重新执行存储过程,这样插入速度就明显快了不少,100万数据几分钟就插完了。
这样设置会出现数据丢失的情况,于是我做了一个测试,用存储过程每次向数据库插入100万条数据,插了20次,也没有出现数据丢失的情况,看来这个数据丢失的情况应该是在某种特定的情况吧。具体哪种情况会使得数据丢失我也不清楚了,还望各位指教。
接下来就来看看千万数据的分页问题吧