宽带数据分析系统,一个整个浙江省用户上网的话单解析,每天要处理压缩后文件达到了3G.
要实现的目标:解析数据进行归类,并且导入到相关到表中(oracle数据库中)。
尝试方法1:把所有文件导入到数据库,通过表关联建索引的方法,一次处理下来时间=15小时。
尝试方法2:用fopen打开文件,逐行匹配,进行关联解析,=20小时。
尝试方法3:把所有文件导入到内存,对1000多万字典表放人到MAP中,把搜索字段做了key,字典信息全部放在value里面,再进行关联查询。时间=8小时
终结下,oracle的存储过程并不像想象的效率这么高。而用fopen在磁盘里面查找数据跟海底捞针效率绝对是最差的。放内存,尤其是hash-MAP使用可以大大的提高效率。
当然后面出现了,字典表导入内存超过了2G至内存爆掉。处理办法:升级硬件,操作系统升级到了64位。或者编译程序的时侯编译为大地址。