データベースから100個のレコードを選択してタスクを実行するRubyデーモンがあります。
高速化するために、通常は同じデーモンの 3 つのインスタンスを作成します。そして、それぞれが mysqlLIMIT
とを使用して異なるデータを選択しOFFSET
ます。
問題は、同じデータ レコードに対してタスクが 2 回または 3 回実行される場合があることです。
LIMIT
したがって、データベースのみを信頼するだけでは十分ではないと思いますOFFSET
... 2つ以上のデーモンが実際に同時に同じデータを収集できる場合があるためです。
どうすれば安全に行うことができますか?2 つのインスタンスを回避して同じデータを選択する
- デーモン 1 => 1 から 100 までのレコードを選択
- Daemon 2 => 101 から 200 までのレコードを選択
- Daemon 3 => 201 から 300 までのレコードを選択