perl dbi mysql 向表中插入数据速度很慢

[复制链接]
查看11 | 回复1 | 2012-10-15 15:57:26 | 显示全部楼层 |阅读模式
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一次然后,你就会体会到飞一般的感觉
回复

使用道具 举报

千问 | 2012-10-15 15:57:26 | 显示全部楼层
同样的程序、同样的数据,运行速度是环境决定的,Windows在大型数据吞吐方面肯定比不上Linux的。另外你需要注意点,插入数据库的语句一般会随着数据库里面的数据的增加而减慢,如果向一个空库插入一条数据,肯定一瞬间就完成了,而向一个拥有庞大数据的表里面插入,可能会需要很久。你比较两个系统的速度,应该是具有相同的初始数据量。此外影响插入速度的数据库表的索引,一般说来索引越少插入就越快,在大量数据插入前,可以删除索引。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行