令入参id为0
while(true){
select * from table where id>#{id} order by id asc limit 100;
取结果集中最大id作为下次查询的入参
其他操作
}
这个算法一般没问题,但在主从数据系统中,主库写,查询从库遍历数据时,出现了漏数据问题
原因是,主库同步到从库是多线程的,id较大的先同步到从库,等大id的数据处理完了,小id的数据再同步过来时,程序将不再处理
解决办法是,查询时排除时间戳是最近一分钟的数据