我有一个表,其主键为字符串,如12a4...
, c3af...
。我想并行处理它们:
process_them(1,4) on machine 1
process_them(2,4) on machine 2
process_them(3,4) on machine 3
process_them(4,4) on machine 4
执行上述操作必须选择表中的所有行,而不需要机器相互协调。我能想到的最好的主意是将它们分成 16 个,例如:
select * from table where id like '1%'
...
select * from table where id like 'e%'
select * from table where id like 'f%'
有没有更好的主意可以让我进行更多拆分,例如总行的 1/2、1/4、1/8、1/16、1/32 等?
注意:我这样做是为了对用户数据进行夜间处理并向他们发送通知。我没有在数据库本身上编辑任何东西。而且我们需要一次处理数千个用户,它不能以细粒度的方式进行拆分,因为那样不会有效率。