MySQL Proxy и балансировка нагрузки
Я просто хочу точно понять, как соединения и запросы ведут себя с MySQL Proxy.
У меня есть два внутренних сервера, на которых установлены идентичные установки MySQL, настроенные в конфигурации master-master, которая, кажется, работает отлично. Т.е. я могу манипулировать таблицами и данными на одной, а изменения мгновенно отражаются на другой, и наоборот.
Я установил 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, а простой пример.