百万行csv数据导入mysql的处理

在企业精准营销系统项目中,面临大量CSV数据(百万行级别)需导入MySQL的问题。初始单线程导入策略在数据量增大时效率降低。为提升速度,采用多线程处理,将CSV文件按20000行分割,每5000行批量提交,最大线程数设为10。实测表明,此方法显著减少了数据库导入时间,尤其在处理大规模数据时。
摘要由CSDN通过智能技术生成

            公司有个企业精准营销系统项目,需求就是客户导出他们的客户信息数据和交易数据,都是csv文件,交易数据级别是百万级别,甚至达到千万,用我们系统进行分析时,需要导入mysql数据库中,方便统计分析。

        开始没有考虑数据量,我们思路是按行解析csv文件,批量导入mysql中,后来测试发现,对于10w行内数据,基本保持在20秒左右时间导入完成。当数据达到100w行时,导入用时是190秒,太慢了。我们换了一个思路,可以利用多线程,充分利用计算机资源。我们根据文件的大小,拆分成多个文件。每个线程来处理一个文件,最大线程是10个。经测试,导入数据库时间明显减少,用下表数据来展示结果:

        附:每5000行批处理提交一次,文件按20000行分割成一个文件,如果大于20w行,则平分成10个文件。

电脑配置:intel i5-2.50GHZ 内存8G 64位操作系统

500w行记录(约330M)
次数\方式 单线程执行(单位:毫秒) 多线程执行(单位:毫秒) 相差时间(单位:毫秒)
1 922099 573437 348662
2 946358 586947 359411
3 956893 574340 382553

100w行记录
次数\方式 单线程执行(单位:ms) 多线程执行(单位:ms)
1 183951 100737
2 163927 112452
3 194593 106406
20w行记录
次数\方式 单线程执行(单位:ms) 多线程执行(单位:ms)
1 49859 21700
2 54694 21891
3 48976 21989
10w行记录
次数\方式 单线程执行(单位:ms) 多线程执行(单位:ms)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值