mysql 插入百万数据过慢的解决办法

2022-09-28 10:56:54

一开始我用存储过程批量插入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次,也没有出现数据丢失的情况,看来这个数据丢失的情况应该是在某种特定的情况吧。具体哪种情况会使得数据丢失我也不清楚了,还望各位指教。

接下来就来看看千万数据的分页问题吧

  • 作者:ChangeScene
  • 原文链接:https://blog.csdn.net/qq_36433857/article/details/86522636
    更新时间:2022-09-28 10:56:54