txt文件,基本上每一行都看做一条记录,但是要进行解析。
每次读取N行,开启多线程,文件拆分。。。。。。。
目前是读一行解析一行入库一条,不知道大家还有更好的解决方案吗,欢迎讨论。
采用多个线程使用RandomAccessFile读取文,将读取文件放在一个队列中,超过一定数据,批量发送到数据库。
解析和入库耗时不一样吧
可以流水做
流什么水啊
多线程产什么的目的从来都不是因为要解决计算速度问题,多线程只能降低一个问题的解决速度。
就一行一行读就行了,关键是要用BufferedReader进行缓冲,再者就是你的程序算法是怎么实现的了。
其实说流水不太贴切
用一组线程(进程)进行解析
另一组线程(进程)进行分析入库
中间利用队列协调,比如全局变量,或者分布式的gearmend
不过只是之上谈兵
主要是看哪里性能可以提升
如果是IO慢可以考虑先放内存
入库慢可以按我的方法试试
分布式处理 map reduce
入库时写入数据库吗?那性能瓶颈在这里。
你有没有测试把写入数据库注释掉,只读文件和解析?我想几十M的文件大概几秒钟就可以完成吧。
如果是写入数据库的话,简单的方法就是批量更新。写入N条数据提交事务一次,这个N的具体数值要经过实验得出。速度一定会比单条提交快很多。
再想提高性能的话,就要做多线程并发提交了,具体的并发数量同样需要实验得出。在并发提交的同时同样需要批量提交,批量提交提高数据库访问性能最有效的方法。