最近线上文件导入极慢,每秒才导入两行。来个25W的文件就要导半天
后来发现时间消耗在每条记录的校验sql上了。每条记录要发两条sql校验耗时400毫秒,25w条数据就要27小时!
这种情况在测试环境没有发生过,测试环境查询sql只要8毫秒,估计生产数据库是远程的,网络传输有延时。
考虑到文件日后还有增大的可能性。
遂改成:
1,将导入文件不发sql校验正确性,直接落库在一张临时表里
2,然后发sql在数据库比对数据。
3,将比对好的数据replace到正式表中。
这样改完后就不用逐条处理,发几十万查询sql。改完后开发环境每秒能处理500条数据,25万条数据只要9分钟。