批量处理数据的一些经验
批量处理数据库数据时,如果处理不当,可能拖慢数据库或者搞垮数据库,从而影响整个应用的响应速度。下面列举一下解决方案。
每处理一批,让线程休息一段时间
假设总共有5万条数据需要处理,每次处理1000条,那么处理完1000条数据,sleep一段时间,不要太频繁的操作数据库。
拆分大的insert操作
假设总共有5万条数据需要处理,那么你可以每次只是处理1000条。如果一下子处理5万条,锁表的操作会加长,导致系统响应速度变慢。
备注:在循环里面,记得必须有退出循环的条件,避免死循环。
设置每次处理的最大量
如果你是使用一个线程来批量处理数据的,那么可以设置这个线程最多处理多少条记录,然后线程执行完毕退出,不要让这个线程工作太长时间。至于处理不完的数据,可以下次继续执行。