关于多实例多线程下数据分片查询的简单算法实现
原创2022/7/20小于 1 分钟
关于多实例多线程下数据分片查询的简单算法实现
1、业务背景
现有某产品需求,需要在每天晚上定时对一些数据进行计算,但需要避免查询数据时耗时过长。
线上共2个实例,每个实例开启了4个线程。
2、解决方案
可以得知以下信息:
- 实例数量:instanceCount = 2
- 线程数量:concurrentNumber = 4
- 实例编号:instanceIndex = 0 和 1
- 线程下标:index = 0 ~ 3
在查询数据的时候,可以用如下方式:
select * from tableName where id % (#{instanceCount} * #{concurrentNumber}) = (#{instanceIndex} * #{concurrentNumber} + #{index})
