近期接受到小任务,要处理千万级的大规模csv数据然后写入到sqlite数据库中,经过一番挣扎,有以下两点感受:
1.将数据库放在固态硬盘当中(众所周知)
2.在执行完所有的insert语句后,执行commit()提交,而不是insert一次,commit()一次。
接下来写简化版代码进行示意,
低效率例子:
for i in range(35000000):
c.execute('''sql''')
conn.commit()
conn.close()
#简化代码没有加入具体业务逻辑,但此种情况下处理一万条数据需要80s左右
高效率例子:
for i in range(35000000):
c.execute('''sql''')
conn.commit()
conn.close()
#此种情况下8s一万条
insert完执行commit速度最少提升10倍左右!