在工作中,有时候会遇到大批量的数据处理,为了节省时间,一般会用线程批量处理,先举例几个方案。
1.批量查询,单条处理 (利用线程池处理,线程池最大值:10)
优势:查询速度快;
出现异常影响数量小;
事务处理及时;
劣势:占用线程数量多;
处理时间长;
数据库链接频繁开启、关闭
2.批量查询,批量处理(不使用线程池,原因:数据量过多,事务提交相对较慢,使用线程池可能导致数据库调用异常,影响后续数据插入)
优势:查询速度快;
处理速度快;
不需要频繁开启与关闭数据库连接;
劣势:事务处理时间较长;
出现异常影响批量数据;
3.批量查询,分批处理(可以尝试使用线程池,根据处理数据事务响应速度与数据库连接考虑)
优劣:查询速度快;
处理速度相对较快;
异常发生时,影响数据相对较少;
事务处理不会过长;
在需要进行大批量数据处理的时候,可以根据自身需求进行调整,第三个方案比较中庸,负载也小(数据库负载,三个方案都试验过,对CPU与服务器基本无负载),批量处理时需考虑异常数据的处理,需要开发一个单个或根据特定值处理的程序,处理异常数据。
(注:可以直接insert select 的数据不需要考虑,直接通过sql或请DBA处理)