2016-07-08 6 views
0

My mysql-driver использует двоичный протокол для непосредственного взаимодействия с mysql. И я хочу знать, как часто mysql отправляет пакеты с результатами.Как mysql отправляет большой результат из запроса SELECT?

Существует 2 способа:

  1. Mysql накапливают некоторые результаты в памяти, и отправляет их в одно время.

  2. Mysql отправляет результаты каждый раз, когда они доступны.

Не могли бы вы помочь мне определить эту ситуацию? Мне нужен конкретный ответ на этот вопрос на основе источников MySQL или конкретной фразы из руководства

Может у MySQL есть некоторые настройки для буфера ответа?

Спасибо.

+0

Возможно, это зависит от драйвера и настроек. – Barmar

+0

Как я уже сказал, я направил соединение с mysql. Этот mysql-драйвер является частью моего кода, поэтому я могу изменить и управлять им, как я хочу. Моя точка зрения - это всего лишь сторона mysql-сервера. Как mysql отправляет пакеты результатов. –

+0

Возможно, вы используете некоторые производные от c api. Обычный способ получения результатов выглядит по-разному: вы отправляете запрос на сервер mysql для извлечения следующей (= одной) строки результирующего набора, и сервер отправляет обратно пакет (та же логика для всех остальных команд). Mysql сохранит результаты (если вы не отправите, например, запрос на освобождение результата). Взгляните на [Обзор функций API C] (http://dev.mysql.com/doc/refman/5.7/en/c-api-function-overview.html), вероятно, ваш драйвер будет иметь аналогичные функции. – Solarflare

ответ

0

Протокол клиент-сервер документирован в документации Chapter 14 документации MySQL.

Команды, используемые для отправки результатов запроса и получения, задокументированы в Command Phase. Задача для получения результатов зависит от вашего вопроса: COM_STMT_FETCH. Параметрами этой команды являются идентификатор оператора ранее подготовленного оператора и количество строк для извлечения. Документация не говорит об этом явно, но я полагаю, что она не возвращает больше строк, чем запрашивается. Поэтому он отправляет результаты N за раз, где N является параметром этой команды.

Смежные вопросы