perl dbi mysql 向表中插入数据速度很慢
发布网友
发布时间:2022-04-07 19:10
我来回答
共2个回答
热心网友
时间:2022-04-07 20:40
DBI默认是自动commit的。
因此,你循环里面的
$ImportData->execute(temp[0],$temp[1],$temp[2],$temp[3],temp[4],$temp[5],$temp[6]);
每插一行,就commit一次,效率就很差了。
1.在连接库后,禁用自动commit:
$dbh->{AutoCommit} = 0;
2. 控制commit频度:
$ImportData->execute(temp[0],$temp[1],$temp[2],$temp[3],temp[4],$temp[5],$temp[6]);
$i++;
$dbh->commit() if $i % 1000==0; #插1000行,commit一次
然后,你就会体会到飞一般的感觉
热心网友
时间:2022-04-07 21:58
同样的程序、同样的数据,运行速度是环境决定的,Windows在大型数据吞吐方面肯定比不上Linux的。
另外你需要注意点,插入数据库的语句一般会随着数据库里面的数据的增加而减慢,如果向一个空库插入一条数据,肯定一瞬间就完成了,而向一个拥有庞大数据的表里面插入,可能会需要很久。你比较两个系统的速度,应该是具有相同的初始数据量。
此外影响插入速度的数据库表的索引,一般说来索引越少插入就越快,在大量数据插入前,可以删除索引。