MySQL Proxy で接続とクエリがどのように動作するかを正確に理解したいだけです。
完全に機能しているように見えるマスターマスター構成でセットアップされた、同一のMySQLインストールを実行する2つのバックエンドサーバーがあります。つまり、一方でテーブルとデータを操作でき、その変更は即座にもう一方に反映されます。その逆も同様です。
バッチ ファイルのコマンド ラインで指定されたバックエンド サーバーを使用して、別のマシンに MySQL Proxy をインストールしました。
プロキシのアドレスを使用して Workbench 経由でデータベースにアクセスできます。
私の質問は、各サーバーにどのように、そして何が委任されているのですか? ドキュメントには、プロキシがラウンドロビンを使用してクライアントを分割すると記載されています(リクエストを均等に分割すると思いますか?)。それは実際に作成された PDO 接続が共有されることを意味するのでしょうか、それともクエリが送信されているのでしょうか?
後者の場合、サブクエリも分割しますか? そうでない場合、クライアント/接続分割を利用するために、より複雑な SQL ステートメントを再コーディングする必要がありますか?
クエリをやり直す必要があると私が考える簡単な例は次のとおりです。
$SQL = "SELECT id FROM my_table LIMIT 1000";
次のようになります (はるかに複雑です):
$results = array();
for($1=0;$i<1000;$i++){
$conn = new $this->dbconnect;
$r = $conn->prepare('SELECT id FROM my_table WHERE id = ?');
$r->execute(array($i));
array_push($results, $r->fetch);
$conn->close();
}
それともただの狂気ですか?リクエストがサーバー間で分割されているという事実によって、余分なオーバーヘッドが相殺されるでしょうか? それとも、「従来の」方法で実行するよりもはるかに遅くなりますか?(コードエラーについては、私の頭の中にあったため、申し訳ありません)。
LIMIT が「id」ではないことはわかっています。これは単なる例です。