基本的に、ユーザー プロビジョニング アルゴリズムは次のようなことを行います。
-新しいユーザーのクエリ -データベースを更新して、そのユーザーがいることを示します
プロセスの他のインスタンスが既に開始されている間に「読み取り」ステップを実行する機能をロックする方法を考えています。そのため、通常のトランザクションよりも少し積極的です。読み取りと読み取りのロックが必要であり、もちろん無関係なプロセスはロックの影響を受けずに読み取ることができるはずです。
基本的に、ユーザー プロビジョニング アルゴリズムは次のようなことを行います。
-新しいユーザーのクエリ -データベースを更新して、そのユーザーがいることを示します
プロセスの他のインスタンスが既に開始されている間に「読み取り」ステップを実行する機能をロックする方法を考えています。そのため、通常のトランザクションよりも少し積極的です。読み取りと読み取りのロックが必要であり、もちろん無関係なプロセスはロックの影響を受けずに読み取ることができるはずです。
UPDATE クエリをすぐに実行して、現在のサーバーのすべての非アクティブなユーザーを「盗む」ことができます。
個々の UPDATE クエリは常にアトミックであるため、これにより、各ユーザーが 1 つのサーバーによってのみ取得されるようになります。
MySQL では UPDATE から更新された行を返すことができないため、どの行が「盗まれた」かを示すために識別子列を追加する必要があります。
ユーザーをプロビジョニングするたびに、GUID を選択し、UPDATE ステートメントで識別子列をその GUID に設定してから、その GUID を持つ行を選択します。