经过测试,当前excel导入功能,20000 条数据平均导入用时在 0.5h 左右。现要求将 50000+ 的数据量导入时间控制在 10m 之内。 使用 10000条数据进行测试,结果如下: Excel文件读取用时 数据检查用时 ...
经过测试,当前excel导入功能,20000 条数据平均导入用时在 0.5h 左右。现要求将 50000+ 的数据量导入时间控制在 10m 之内。 使用 10000条数据进行测试,结果如下:
<table> <thead> <tr> <th>Excel文件读取用时</th> <th>数据检查用时</th> <th>数据库写入用时</th> </tr> </thead> <tbody> <tr> <td>3.2m</td> <td>1.3m</td> <td>1.2m</td> </tr> </tbody> </table>nn 打开Excel导入代码,我们可以看到是调用了jxl,并使用了三层for循环 我们了解到jxl在大数据量上的读取速度表现远不如poi,具体差异如下(数据来源于网络):
<table> <thead> <tr> <th>文件大小</th> <th>POI加载耗时</th> <th>POI总耗时</th> <th>JXL加载耗时</th> <th>JXL总耗时</th> </tr> </thead> <tbody> <tr> <td>57KB</td> <td>1172ms</td> <td>1172ms</td> <td>1265ms</td> <td>2250ms</td> </tr> <tr> <td>652KB</td> <td>2297ms</td> <td>2313ms</td> <td>4406ms</td> <td>9705ms</td> </tr> <tr> <td>2.24M</td> <td>3109ms</td> <td>3140ms</td> <td>16313ms</td> <td>37453ms</td> </tr> </tbody> </table>nn 所以我们着手于将原JXL的读取方式改为POI的读取方式 修改之后测试发现,10000条数据导入速度降至30秒左右,50000条在1分20秒左右,效果明显。 之后又通过将原来数据检查和数据插入方法中的 update 与 insert 语句替换为 marge into ,(这个我会另开一篇讲),最终10000条数据导入的总用时在40秒左右,50000条数据导入的总用时在2分钟左右。
本站为非盈利网站,如果您喜欢这篇文章,欢迎支持我们继续运营!
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com