0

リードレプリカで Amazon MySQL RDS を使用することを検討しています。私を悩ませている唯一のものは、レプリカラグと最終的な不一致です. たとえば、ユーザーが自分のプロファイルを変更し (UPDATE はメイン DB インスタンスで実行されます)、ページを更新して変更された情報を表示する場合をイメージします (レプリカ ラグのためにまだ変更を受け取っていないレプリカから SELECT が実行される可能性があります)。

偶然、ターゲットを絞ったクエリを実行できることを述べているAmazon の記事を見つけました。私にとっては、レプリカではなくメイン DB インスタンスで選択を実行するように Amazon に指示するために、何らかのパラメータを追加できるように思えます。ユーザー プロファイルの例は非常に些細なことですが、ユーザーが複数の手順を実行し、次の画面で更新された情報を表示する必要がある場合など、より現実的なケース、たとえばチェックアウトでも同じ問題が発生します。はい、アプリケーションはそれ自体でデータ セット全体をキャッシュできますが、メインの DB インスタンスでターゲットを絞ったクエリを実行する方法を誰かが知っていれば、それは素晴らしいことです。

4

1 に答える 1

1

あなたが参照したリンクを読みましたが、「ターゲット」などの言及は見つかりませんでした。

しかし、この行はあなたが言及しているものかもしれません:

それ以外の場合は、負荷を分散して、リードレプリカの 1 つから読み取る必要があります。この決定は、アプリケーション内でクエリごとに行うことができます。おそらく、アプリケーション内で使用可能なリードレプリカのある種のレジストリを維持し、それらの中からラウンドロビンまたはランダム分散ベースで選択することをお勧めします。

もしそうなら、私はその行を解釈して、プールから 1 つのサーバーを選択してそのサーバーをヒットするだけで、アプリケーションの読み取りのバランスを取ることができることを示唆しています。しかし、それはすべてアプリケーション ロジックにあります。

于 2014-12-28T17:48:17.820 に答える