Ich habe eine Tabelle mit Primärschlüssel in Zeichenfolge wie 12a4...
, c3af...
. Ich möchte, dass sie parallel verarbeiten:Teilen Sie einen Hex-Index in n Stücke
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
die oben tun müssen wählen alle Zeilen in der Tabelle, ohne Maschinen miteinander zu koordinieren. Die beste Idee, die ich mit oben kommen kann ist sie in 16 wie aufzuspalten:
select * from table where id like '1%'
...
select * from table where id like 'e%'
select * from table where id like 'f%'
Gibt es eine bessere Idee, die mir mehr Splits wie 1/2 ermöglicht, 1/4, 1/8, 1/16, 1/32 usw. der gesamten Zeilen?
Hinweis: Ich mache dies, um nächtliche Verarbeitung von Benutzerdaten und Senden von Benachrichtigungen zu tun. Ich bearbeite nichts an der DB selbst. Und wir müssen Tausende von Benutzern gleichzeitig verarbeiten, und es kann nicht in einer feinkörnigen Art und Weise aufgeteilt werden, da es auf diese Weise nicht effizient ist.
Wenn die Maschinen eine inkrementierende System-ID haben, könnten sie diese in einer LIMIT-Klausel verwenden. Aber das gilt wahrscheinlich als "koordinierend". IMHO, um etwas besser als das zu erreichen, was Sie vorschlagen, müssen sie etwas über ihre Umwelt wissen. – mabi
Ich denke, verteilte Datenbank ist die beste Lösung. – Suleman