<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.mysqlnd.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.stats.php',
    1 => 'Статистика',
    2 => 'Статистика',
  ),
  'up' => 
  array (
    0 => 'book.mysqlnd.php',
    1 => 'Mysqlnd',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.persist.php',
    1 => 'Постоянное соединение',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.notes.php',
    1 => 'Замечания',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/mysqlnd/stats.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.stats" class="chapter">
 <h1 class="title">Статистика</h1>


 <p class="para">
  MySQL Native Driver поддерживает сбор статистики по взаимодействию
  клиента с сервером. Статистические данные собираются с двух основных точек:
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">Клиентская статистика</span>
   </li>
   <li class="listitem">
    <span class="simpara">Статистика соединения</span>
   </li>
  </ul>
 </p>
 <p class="para">
  При работе с модулем <a href="book.mysqli.php" class="link">mysqli</a> эти статистические данные получают через два API-вызова:
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara"><span class="function"><a href="function.mysqli-get-client-stats.php" class="function">mysqli_get_client_stats()</a></span></span>
   </li>
   <li class="listitem">
    <span class="simpara"><span class="function"><a href="mysqli.get-connection-stats.php" class="function">mysqli_get_connection_stats()</a></span></span>
   </li>
  </ul>
 </p>

 <blockquote class="note"><p><strong class="note">Замечание</strong>: 
  <span class="simpara">
   Статистика агрегируется по всем расширениям, которые работают через драйвер MySQL Native
   Driver.
   Например, при настройке модуля <a href="book.mysqli.php" class="link">mysqli</a>
   и MySQL-драйвера модуля PDO на работу с драйвером MySQLnd
   вызовы функций модуля <a href="book.mysqli.php" class="link">mysqli</a>
   и вызовы методов класса PDO влияют на статистику.
  </span>
  <span class="simpara">
   Невозможно узнать, насколько конкретный API-вызов модуля,
   который скомпилировали с драйвером MySQL Native Driver, повлиял на конкретную
   статистику.
  </span>
 </p></blockquote>

 <div id="mysqlnd.stats.retrieve" class="section">
  <h2 class="title">Получение статистики</h2>

  <p class="simpara">
   Клиентскую статистику получают через вызов функции
   <span class="function"><a href="function.mysqli-get-client-stats.php" class="function">mysqli_get_client_stats()</a></span>.
  </p>

  <p class="simpara">
   Статистику соединения получают через вызов функции
   <span class="function"><a href="mysqli.get-connection-stats.php" class="function">mysqli_get_connection_stats()</a></span>.
  </p>

  <p class="simpara">
   Обе функции возвращают ассоциативный массив,
   в котором метрики статистики — ключи, которые
   соответствуют статистическим данным.
  </p>
 </div>

 <div id="mysqlnd.stats.statistics" class="section">
  <h2 class="title">Статистика драйвера MySQL Native Driver</h2>
  <p class="simpara">
   Бо́льшая часть статистических данных связана с подключением,
   но отдельные данные связаны с процессом, и тогда это упоминается.
   
  </p>
  <p class="simpara">
   Следующая статистика выдается драйвером MySQL Native Driver:
  </p>

  <dl>
   <strong class="title">Сетевая статистика</strong>

   
    <dt id="mysqlnd.stats.statistics.bytes-sent"><code class="literal">bytes_sent</code></dt>
    <dd>
     <span class="simpara">
      Количество байтов, которые PHP отправил MySQL-серверу.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received"><code class="literal">bytes_received</code></dt>
    <dd>
     <span class="simpara">
      Количество байтов, которые PHP получил от MySQL-сервера.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-sent"><code class="literal">packets_sent</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов, которые отправили по протоколу MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received"><code class="literal">packets_received</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов, которые получили по протоколу MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.protocol-overhead-in"><code class="literal">protocol_overhead_in</code></dt>
    <dd>
     <span class="simpara">
      Накладные расходы протокола MySQL Client Server в байтах для входящего трафика.
      Пока накладными расходами признаётся только заголовок Packet Header (4 байта).
      <code class="code">protocol_overhead_in = packets_received * 4</code>
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.protocol-overhead-out"><code class="literal">protocol_overhead_out</code></dt>
    <dd>
     <span class="simpara">
      Накладные расходы протокола MySQL Client Server в байтах для исходящего трафика.
      Пока накладными расходами признаётся только заголовок Packet Header (4 байта).
      <code class="code">protocol_overhead_out = packets_received * 4</code>
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-ok-packet"><code class="literal">bytes_received_ok_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер пакетов OK в байтах, которые драйвер получил по протоколу MySQL Client Server.
      Пакеты OK иногда содержат сообщение о статусе.
      Длина сообщения о статусе варьируется, поэтому размер
      пакета OK не фиксирован.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-ok"><code class="literal">packets_received_ok</code></dt>
    <dd>
     <span class="simpara">
      Количество полученных пакетов OK протокола MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-eof-packet"><code class="literal">bytes_received_eof_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер пакетов EOF в байтах, которые драйвер получил по протоколу MySQL Client Server.
      Размер пакетов EOF варьируется и зависит от версии сервера.
      При ошибке в EOF-пакете также передаётся сообщение об ошибке.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-eof"><code class="literal">packets_received_eof</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов EOF протокола MySQL Client Server.
     </span>
     <span class="simpara">
      Как и в случае с другой статистикой пакетов, количество пакетов будет
      увеличиваться, даже если PHP получит не ожидаемый пакет,
      а, например, сообщение об ошибке.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-rset-header-packet"><code class="literal">bytes_received_rset_header_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер результирующего набора пакетов заголовков протокола
      MySQL Client Server в байтах.
      Размер пакетов варьируется в зависимости от полезной нагрузки
      (инструкции <code class="literal">LOAD LOCAL INFILE</code>, <code class="literal">INSERT</code>,
      <code class="literal">UPDATE</code>, <code class="literal">SELECT</code>, сообщение об ошибке).
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-rset-header"><code class="literal">packets_received_rset_header</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов заголовков результирующего набора протокола MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-rset-field-meta-packet"><code class="literal">bytes_received_rset_field_meta_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер пакетов метаданных (информации о столбце) результирующего набора протокола
      MySQL Client Server в байтах.
      Конечно, размер зависит от столбцов в наборе результатов.
      При выполнении команды COM_LIST_FIELDS
      вместо пакета с метаданными передаётся пакет с ошибкой или EOF-пакет.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-rset-field-meta"><code class="literal">packets_received_rset_field_meta</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов метаданных (информации о столбце) результирующего набора протокола
      MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-rset-row-packet"><code class="literal">bytes_received_rset_row_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер пакетов данных строки результирующего набора протокола MySQL Client Server
      в байтах.
      Пакет также может передавать ошибку или пакет EOF.
      Количество ошибок и пакетов EOF вычисляют путём вычитания
      метрик <code class="literal">rows_fetched_from_server_normal</code>
      и <code class="literal">rows_fetched_from_server_ps</code>
      из метрики <code class="literal">bytes_received_rset_row_packet</code>.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-rset-row"><code class="literal">packets_received_rset_row</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов данных строки результирующего набора протокола
      MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-prepare-response-packet"><code class="literal">bytes_received_prepare_response_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер пакетов OK протокола MySQL Client Server для инициализации подготовленного запроса
      (init-пакеты подготовленного запроса) в байтах.
      Пакет также может передавать сообщение об ошибке.
      Размер пакета зависит от версии MySQL-сервера.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-prepare-response"><code class="literal">packets_received_prepare_response</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов OK протокола MySQL Client Server для инициализации подготовленного
      запроса (init-пакеты подготовленного запроса).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-change-user-packet"><code class="literal">bytes_received_change_user_packet</code></dt>
    <dd>
     <span class="simpara">
      Общий размер пакетов COM_CHANGE_USER протокола MySQL Client Server protocol в байтах.
      Пакет также может передавать ошибку или состояние EOF.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общий размер в байтах включает размер пакета заголовка —
       4 байта, см. накладные расходы протокола.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-received-change-user"><code class="literal">packets_received_change_user</code></dt>
    <dd>
     <span class="simpara">
      Количество пакетов COM_CHANGE_USER протокола MySQL Client Server.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.packets-sent-command"><code class="literal">packets_sent_command</code></dt>
    <dd>
     <span class="simpara">
      Количество команд протокола MySQL Client Server, которые отправил PHP на MySQL-сервер.
     </span>
     <span class="simpara">
      Нет способа узнать, какие именно команды и сколько из них отправил PHP.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-real-data_normal"><code class="literal">bytes_received_real_data_normal</code></dt>
    <dd>
     <span class="simpara">
      Количество байтов полезной нагрузки, которые получил PHP-клиент
      от драйвера <code class="literal">mysqlnd</code> по текстовому протоколу.
     </span>
     <span class="simpara">
      Это размер фактических данных, которые содержатся в наборах результатов, которые
      не исходят из подготовленных запросов и которые получил PHP-клиент.
     </span>
     <span class="simpara">
      Обратите внимание, даже при извлечении драйвером <code class="literal">mysqlnd</code> полного набора результатов
      с MySQL-сервера в статистике учитываются только фактические данные,
      которые PHP-клиент получил от дайвера <code class="literal">mysqlnd</code>.
     </span>
     <p class="para">
      Пример последовательности кода, которая увеличивает значение, выглядит следующим образом:
      <div class="example-contents">
<div class="cdata"><pre>
$mysqli = new mysqli();
$res = $mysqli-&gt;query(&quot;SELECT &#039;abc&#039;&quot;);
$res-&gt;fetch_assoc();
$res-&gt;close();
</pre></div>
      </div>

      Каждая операция извлечения будет увеличивать значение.
     </p>
     <p class="para">
      Однако значение метрики не увеличится, если результирующий набор только
      буферизуется на клиенте, но не извлекается, как, например, в следующем примере:
      <div class="example-contents">
<div class="cdata"><pre>
$mysqli = new mysqli();
$res = $mysqli-&gt;query(&quot;SELECT &#039;abc&#039;&quot;);
$res-&gt;close();
</pre></div>
      </div>

     </p>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bytes-received-real-data-ps"><code class="literal">bytes_received_real_data_ps</code></dt>
    <dd>
     <span class="simpara">
      Количество байтов полезной нагрузки, которую получил PHP-клиент
      от драйвера <code class="literal">mysqlnd</code> по протоколу подготовленного запроса.
     </span>
     <span class="simpara">
      Это размер фактических данных, которые содержатся в наборах результатов, которые
      не исходят из подготовленных запросов и которые получил PHP-клиент.
     </span>
     <span class="simpara">
      Модуль не увеличит значение, если PHP-клиент впоследствии не прочитает набор результатов.
     </span>
     <span class="simpara">
      Обратите внимание, что, хотя полный результирующий набор мог быть получен от MySQL-сервера
      через драйвер <code class="literal">mysqlnd</code>, в этой статистике учитываются только фактические данные,
      которые PHP-клиент получил от драйвера <code class="literal">mysqlnd</code>.
     </span>
     <span class="simpara">
      Смотрите также описание метрики <code class="literal">bytes_received_real_data_normal</code>.
     </span>
    </dd>
   
  </dl>

  <dl>
   <strong class="title">Статистические данные результирующего набора</strong>

   
    <dt id="mysqlnd.stats.statistics.result-set-queries"><code class="literal">result_set_queries</code></dt>
    <dd>
     <span class="simpara">
      Количество запросов, которые сгенерировали набор результатов.
      Примеры запросов, которые генерируют результирующий набор:
      <code class="literal">SELECT</code>, <code class="literal">SHOW</code>.
     </span>
     <span class="simpara">
      Модуль не увеличивает значение метрики, если произойдет ошибка при чтении
      пакета заголовка результирующего набора из строки.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Этой статистикой пользуются как косвенным показателем
       количества запросов, которые PHP отправил на MySQL-сервер.
       Это помогает определить клиента, который вызывает высокую нагрузку на базу данных.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.non-result-set-queries"><code class="literal">non_result_set_queries</code></dt>
    <dd>
     <span class="simpara">
      Количество запросов, которые не создали набор результатов.
      Примеры запросов, которые не генерируют набор результатов:
      <code class="literal">INSERT</code>, <code class="literal">UPDATE</code>, <code class="literal">LOAD DATA</code>.
     </span>
     <span class="simpara">
      Модуль не увеличивает значение метрики, если произойдет ошибка при считывании
      пакета заголовка результирующего набора из строки.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Этой статистикой пользуются как косвенным показателем
       количества запросов, которые PHP отправил на MySQL-сервер.
       Это помогает определить клиента, который вызывает высокую нагрузку на базу данных.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.no-index-used"><code class="literal">no_index_used</code></dt>
    <dd>
     <span class="simpara">
      Количество запросов, которые создали набор результатов, но не использовали индекс.
      (Смотрите также параметр запуска <code class="literal">--log-queries-not-using-indexes</code> команды mysqld).
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Об этих запросах сообщают через исключение, для чего вызывают
       <code class="code">mysqli_report(MYSQLI_REPORT_INDEX);</code>.
       Вместо этого можно сообщить о них через предупреждения путём вызова
       <code class="code">mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);</code>.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.bad-index-used"><code class="literal">bad_index_used</code></dt>
    <dd>
     <span class="simpara">
      Количество запросов, которые сгенерировали набор результатов без хорошего индекса.
      (Смотрите также параметр запуска <code class="literal">--log-slow-queries</code> команды mysqld).
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Об этих запросах сообщают через исключение, для чего вызывают
       <code class="code">mysqli_report(MYSQLI_REPORT_INDEX);</code>.
       Вместо этого можно сообщить о них через предупреждения путём вызова
       <code class="code">mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);</code>.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.slow-queries"><code class="literal">slow_queries</code></dt>
    <dd>
     <span class="simpara">
      SQL-запросы, выполнение которых заняло больше секунд, чем значение параметра <code class="literal">long_query_time</code>,
      и для проверки которых требовало как минимум такое количество строк,
      которое задали в параметре <code class="literal">min_examined_row_limit</code>.
     </span>
     <div class="caution"><strong class="caution">Предостережение</strong>
      <p class="simpara">
       Не сообщается через функцию <span class="function"><a href="function.mysqli-report.php" class="function">mysqli_report()</a></span>.
      </p>
     </div>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.buffered-sets"><code class="literal">buffered_sets</code></dt>
    <dd>
     <span class="simpara">
      Количество буферизованных результирующих наборов, которые возвращают обычные
      неподготовленные запросы.
     </span>
     <p class="para">
      Примеры вызовов API, которые буферизуют наборы результатов на клиенте:
      <span class="simplelist"><span class="function"><a href="mysqli.query.php" class="function">mysqli_query()</a></span>, <span class="function"><a href="mysqli.store-result.php" class="function">mysqli_store_result()</a></span>, <span class="function"><a href="mysqli-stmt.get-result.php" class="function">mysqli_stmt_get_result()</a></span></span>
     </p>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.unbuffered-sets"><code class="literal">unbuffered_sets</code></dt>
    <dd>
     <span class="simpara">
      Количество небуферизованных результирующих наборов, которые возвращают обычные
      неподготовленные запросы.
     </span>
     <p class="para">
      Примеры вызовов API, которые не буферизуют наборы результатов на клиенте:
      <span class="simplelist"><span class="function"><a href="mysqli.use-result.php" class="function">mysqli_use_result()</a></span></span>
     </p>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.ps-buffered-sets"><code class="literal">ps_buffered_sets</code></dt>
    <dd>
     <span class="simpara">
      Количество буферизованных наборов результатов, которые возвращают подготовленные запросы.
     </span>
     <p class="para">
      Примеры вызовов API, которые буферизуют наборы результатов на клиенте:
      <span class="simplelist"><span class="function"><a href="mysqli-stmt.store-result.php" class="function">mysqli_stmt_store_result()</a></span></span>
     </p>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.ps-unbuffered-sets"><code class="literal">ps_unbuffered_sets</code></dt>
    <dd>
     <span class="simpara">
       Количество небуферизованных наборов результатов, которые возвращают подготовленные запросы.
     </span>
     <span class="simpara">
      По умолчанию подготовленные запросы не буферизуются,
      поэтому эта метрика учтёт большинство подготовленных запросов.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.flushed-normal-sets"><code class="literal">flushed_normal_sets</code></dt>
    <dd>
     <span class="simpara">
      Количество результирующих наборов, которые возвращают обычные
      неподготовленные запросы с непрочитанными данными,
      которые были без предупреждения сброшены.
     </span>

     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Модуль сбрасывает только небуферизованные наборы результатов.
      </span>
      <span class="simpara">
       Небуферизованные результирующие наборы должны быть полностью получены перед
       выполнением нового запроса по соединению, иначе
       MySQL-сервер выдаст ошибку. Если приложение не извлекает
       все строки из небуферизованного результирующего набора, команда mysqlnd
       неявно извлекает результирующий набор, чтобы очистить строку.
      </span>
      <span class="simpara">
       Смотрите также описание метрик <code class="literal">rows_skipped_normal</code>, <code class="literal">rows_skipped_ps</code>.
      </span>
      <p class="para">
       Некоторые причины неявного сброса:
       <ul class="itemizedlist">
        <li class="listitem">
         <span class="simpara">
          Ошибка клиентского приложения
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          Клиент прекратил чтение данных, когда нашёл то, что искал,
          но заставил MySQL-сервер вычислять больше записей, чем требуется
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          Клиентское приложение неожиданно остановилось
         </span>
        </li>
       </ul>
      </p>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.flushed-ps-sets"><code class="literal">flushed_ps_sets</code></dt>
    <dd>
     <span class="simpara">
      Количество результирующих наборов с непрочитанными данными, которые вернули
      подготовленные запросы и которые были без предупреждения сброшены.
     </span>

     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Модуль сбрасывает только небуферизованные наборы результатов.
      </span>
      <span class="simpara">
       Небуферизованные результирующие наборы должны быть полностью получены перед
       выполнением нового запроса по соединению, иначе
       MySQL-сервер выдаст ошибку. Если приложение не извлекает
       все строки из небуферизованного результирующего набора, команда mysqlnd
       неявно извлекает результирующий набор, чтобы очистить строку.
      </span>
      <span class="simpara">
       Смотрите также описание метрик <code class="literal">rows_skipped_normal</code>, <code class="literal">rows_skipped_ps</code>.
      </span>
      <p class="para">
       Некоторые причины неявного сброса:
       <ul class="itemizedlist">
        <li class="listitem">
         <span class="simpara">
          Ошибка клиентского приложения
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          Клиент прекратил чтение данных, когда нашёл то, что искал,
          но заставил MySQL-сервер вычислять больше записей, чем требуется
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          Клиентское приложение неожиданно остановилось
         </span>
        </li>
       </ul>
      </p>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.ps-prepared-never-executed"><code class="literal">ps_prepared_never_executed</code></dt>
    <dd>
     <span class="simpara">
      Количество запросов, которые подготовили, но не выполнили.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.ps-prepared-once-executed"><code class="literal">ps_prepared_once_executed</code></dt>
    <dd>
     <span class="simpara">
      Количество подготовленных запросов, которые выполнили только один раз.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-fetched-from-server-normal"><code class="literal">rows_fetched_from_server_normal</code></dt>
    <dt><code class="literal">rows_fetched_from_server_ps</code></dt>
    <dd>
     <span class="simpara">
      Общее количество строк результирующего набора, которые вернул сервер.
      Сюда входят строки, которые клиент не прочитал,
      но неявно получил из-за сброшенных небуферизованных результирующих наборов.
     </span>
     <span class="simpara">
      Смотрите также описание метрики <code class="literal">packets_received_rset_row</code>.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-buffered-from-server-normal"><code class="literal">rows_buffered_from_client_normal</code></dt>
    <dd>
     <span class="simpara">
      Общее количество буферизованных строк, которые получили в результате обычного запроса.
     </span>
     <span class="simpara">
      Это количество строк, которые вернул MySQL-сервер и буферизовал клиент.
     </span>
     <p class="para">
      Примеры запросов, которые буферизуют результаты:
      <ul class="simplelist">
       <li><span class="function"><a href="mysqli.query.php" class="function">mysqli_query()</a></span></li>
       <li><span class="function"><a href="mysqli.store-result.php" class="function">mysqli_store_result()</a></span></li>
      </ul>
     </p>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-buffered-from-client-ps"><code class="literal">rows_buffered_from_client_ps</code></dt>
    <dd>
     <span class="simpara">
      То же, что и метрика <code class="literal">rows_buffered_from_client_normal</code>,
      но для подготовленных запросов.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-fetched-from-client-normal-buffered"><code class="literal">rows_fetched_from_client_normal_buffered</code></dt>
    <dd>
     <span class="simpara">
      Общее количество строк, которые извлёк клиент из буферизованного результирующего набора,
      который создал обычный запрос.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-fetched-from-client-ps-buffered"><code class="literal">rows_fetched_from_client_ps_buffered</code></dt>
    <dd>
     <span class="simpara">
      Общее количество строк, которые извлёк клиент из буферизованного результирующего набора,
      который создал подготовленный запрос.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-fetched-from-client-normal-unbuffered"><code class="literal">rows_fetched_from_client_normal_unbuffered</code></dt>
    <dd>
     <span class="simpara">
      Общее количество строк, которые извлёк клиент из небуферизованного результирующего набора,
      который создал обычный запрос.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-fetched-from-client-ps-unbuffered"><code class="literal">rows_fetched_from_client_ps_unbuffered</code></dt>
    <dd>
     <span class="simpara">
      Общее количество строк, которые извлёк клиент из небуферизованного результирующего набора,
      который создал подготовленный запрос.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.rows-fetched-from-client-ps-cursor"><code class="literal">rows_fetched_from_client_ps_cursor</code></dt>
    <dd>
     <span class="simpara">
      Общее количество строк, которые клиент извлёк из курсора,
      который создал подготовленный запрос.
     </span>
    </dd>
   

   
   
    <dt id="mysqlnd.stats.statistics.rows-skipped-normal"><code class="literal">rows_skipped_normal</code></dt>
    <dt><code class="literal">rows_skipped_ps</code></dt>
    <dd>
     <span class="simpara">
      Метрику зарезервировали для будущих нужд (пока не поддерживается).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.copy-on-write"><code class="literal">copy_on_write_saved</code></dt>
    <dt><code class="literal">copy_on_write_performed</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
     <span class="simpara">
      При запуске команды mysqlnd переменные, которые возвращает модуль, указывают
      на внутренние сетевые буферы результатов команды mysqlnd.
      Если данные не изменяются, извлеченные данные сохраняются в памяти только один раз.
      Однако для внесения изменений в данные потребуется, чтобы команда mysqlnd выполнила
      операцию копирования при записи.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.free-result"><code class="literal">explicit_free_result</code></dt>
    <dt><code class="literal">implicit_free_result</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня соединения и процесса.
     </span>
     <span class="simpara">
      Общее количество высвобожденных результирующих наборов.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-null"><code class="literal">proto_text_fetched_null</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_NULL</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-null"><code class="literal">proto_binary_fetched_null</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_NULL</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-bit"><code class="literal">proto_text_fetched_bit</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_BIT</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-bit"><code class="literal">proto_binary_fetched_bit</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_BIT</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-tinyint"><code class="literal">proto_text_fetched_tinyint</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TINY</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-tinyint"><code class="literal">proto_binary_fetched_tinyint</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TINY</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-short"><code class="literal">proto_text_fetched_short</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_SHORT</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-short"><code class="literal">proto_binary_fetched_short</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_SHORT</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-int24"><code class="literal">proto_text_fetched_int24</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_INT24</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-int24"><code class="literal">proto_binary_fetched_int24</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_INT24</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-int"><code class="literal">proto_text_fetched_int</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_LONG</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-int"><code class="literal">proto_binary_fetched_int</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_LONG</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-bigint"><code class="literal">proto_text_fetched_bigint</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_LONGLONG</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-bigint"><code class="literal">proto_binary_fetched_bigint</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_LONGLONG</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-decimal"><code class="literal">proto_text_fetched_decimal</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DECIMAL</code> или <code class="literal">MYSQL_TYPE_NEWDECIMAL</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-decimal"><code class="literal">proto_binary_fetched_decimal</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DECIMAL</code> или <code class="literal">MYSQL_TYPE_NEWDECIMAL</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-float"><code class="literal">proto_text_fetched_float</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_FLOAT</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-float"><code class="literal">proto_binary_fetched_float</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_FLOAT</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-double"><code class="literal">proto_text_fetched_double</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DOUBLE</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-double"><code class="literal">proto_binary_fetched_double</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DOUBLE</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-date"><code class="literal">proto_text_fetched_date</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DATE</code> или <code class="literal">MYSQL_TYPE_NEWDATE</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-date"><code class="literal">proto_binary_fetched_date</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DATE</code> или <code class="literal">MYSQL_TYPE_NEWDATE</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-year"><code class="literal">proto_text_fetched_year</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_YEAR</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-year"><code class="literal">proto_binary_fetched_year</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_YEAR</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-time"><code class="literal">proto_text_fetched_time</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TIME</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-time"><code class="literal">proto_binary_fetched_time</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TIME</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-datetime"><code class="literal">proto_text_fetched_datetime</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DATETIME</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-datetime"><code class="literal">proto_binary_fetched_datetime</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_DATETIME</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-timestamp"><code class="literal">proto_text_fetched_timestamp</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TIMESTAMP</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-timestamp"><code class="literal">proto_binary_fetched_timestamp</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TIMESTAMP</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-string"><code class="literal">proto_text_fetched_string</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_STRING</code>, <code class="literal">MYSQL_TYPE_VARSTRING</code> или <code class="literal">MYSQL_TYPE_VARCHAR</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-string"><code class="literal">proto_binary_fetched_string</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_STRING</code>, <code class="literal">MYSQL_TYPE_VARSTRING</code> или <code class="literal">MYSQL_TYPE_VARCHAR</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-blob"><code class="literal">proto_text_fetched_blob</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TINY_BLOB</code>,
      <code class="literal">MYSQL_TYPE_MEDIUM_BLOB</code>,
      <code class="literal">MYSQL_TYPE_LONG_BLOB</code>
      или <code class="literal">MYSQL_TYPE_BLOB</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-blob"><code class="literal">proto_binary_fetched_blob</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_TINY_BLOB</code>,
      <code class="literal">MYSQL_TYPE_MEDIUM_BLOB</code>,
      <code class="literal">MYSQL_TYPE_LONG_BLOB</code>
      или <code class="literal">MYSQL_TYPE_BLOB</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-enum"><code class="literal">proto_text_fetched_enum</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_ENUM</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-enum"><code class="literal">proto_binary_fetched_enum</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_ENUM</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-set"><code class="literal">proto_text_fetched_set</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_SET</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-set"><code class="literal">proto_binary_fetched_set</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_SET</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-geometry"><code class="literal">proto_text_fetched_geometry</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_GEOMETRY</code>,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-geometry"><code class="literal">proto_binary_fetched_geometry</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_GEOMETRY</code>,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-text-fetched-other"><code class="literal">proto_text_fetched_other</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типов
      <code class="literal">MYSQL_TYPE_<span class="replaceable">*</span></code>,
      не перечисленных ранее,
      которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Теоретически значение всегда должно равняться <code class="literal">0</code>.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.proto-binary-fetched-other"><code class="literal">proto_binary_fetched_other</code></dt>
    <dd>
     <span class="simpara">
      Общее количество столбцов типа
      <code class="literal">MYSQL_TYPE_<span class="replaceable">*</span></code>,
      не включённых ранее,
      которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Теоретически, значение всегда должно равняться <code class="literal">0</code>.
      </span>
     </p></blockquote>
    </dd>
   

  </dl>

  <dl>
   <strong class="title">Статистические данные соединения</strong>

   
    <dt id="mysqlnd.stats.statistics.connect-success"><code class="literal">connect_success</code></dt>
    <dd>
     <span class="simpara">
      Общее количество успешных попыток подключения.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       <code class="literal">connect_success</code> содержит сумму
       успешных постоянных и непостоянных попыток подключения.
       Следовательно, количество успешных попыток непостоянного подключения равно
       разности <code class="literal">connect_success - pconnect_success</code>.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.pconnect-success"><code class="literal">pconnect_success</code></dt>
    <dd>
     <span class="simpara">
      Общее количество успешных попыток постоянного подключения.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.connect-failure"><code class="literal">connect_failure</code></dt>
    <dd>
     <span class="simpara">
      Общее количество неудачных попыток подключения.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.reconnect"><code class="literal">reconnect</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.active-connections"><code class="literal">active_connections</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
     <span class="simpara">
      Общее количество активных постоянных и непостоянных подключений.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Общее количество активных непостоянных соединений равно
       разности <code class="literal">active_connections - active_persistent_connections</code>.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.active-persistent-connections"><code class="literal">active_persistent_connections</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
     <span class="simpara">
      Общее количество активных постоянных соединений.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.explicit-close"><code class="literal">explicit_close</code></dt>
    <dd>
     <span class="simpara">
      Общее количество явно закрытых соединений.
     </span>
     <div class="example" id="example-1">
      <p><strong>Пример #1 Примеры фрагментов кода, которые вызывают явное закрытие</strong></p>
      <ul class="itemizedlist">
       <li class="listitem">
        <div class="example-contents">
<div class="cdata"><pre>
$link = new mysqli(/* ... */);
$link-&gt;close(/* ... */);
</pre></div>
        </div>

       </li>
       <li class="listitem">
        <div class="example-contents">
<div class="cdata"><pre>
$link = new mysqli(/* ... */);
$link-&gt;connect(/* ... */);
</pre></div>
        </div>

       </li>
      </ul>
     </div>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.implicit-close"><code class="literal">implicit_close</code></dt>
    <dd>
     <span class="simpara">
      Общее количество неявно закрытых соединений.
     </span>
     <div class="example" id="example-2">
      <p><strong>Пример #2 Примеры фрагментов кода, которые вызывают неявное закрытие</strong></p>
      <ul class="itemizedlist">
       <li class="listitem">
        <div class="example-contents">
<div class="cdata"><pre>
$link = new mysqli(/* ... */);
$link-&gt;real_connect(/* ... */);
</pre></div>
        </div>

       </li>
       <li class="listitem">
        <div class="example-contents">
         <code class="code">unset($link)</code>
        </div>

       </li>
       <li class="listitem">
        <span class="simpara">
         Постоянное соединение: объединенное соединение создали методом
         real_connect, и, возможно, установили неизвестный набор опций, — закрывается
         неявно, чтобы избежать возврата соединения с неизвестными параметрами
        </span>
       </li>
       <li class="listitem">
        <span class="simpara">
         Persistent connection: ping/change_user завершается неудачно, а ext/mysqli
         закрывает соединение
        </span>
       </li>
       <li class="listitem">
        <span class="simpara">
         Окончание работы скрипта: закрываются соединения,
         которые пользователь не закрыл явно
        </span>
       </li>
      </ul>
     </div>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.disconnect-close"><code class="literal">disconnect_close</code></dt>
    <dd>
     <span class="simpara">
      Сбои подключения, на которые указывает вызов метода API-интерфейса языка C
      <code class="literal">mysql_real_connect</code> при попытке
      установить соединение.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.in-middle-of-command-close"><code class="literal">in_middle_of_command_close</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
     <span class="simpara">
      Соединение прервалось в середине выполнения команды
      (не были получены выдающиеся результирующие наборы после отправки запроса
      и до получения ответа, во время получения данных, во время
      передачи данных через LOAD DATA).
     </span>
     <div class="warning"><strong class="warning">Внимание</strong>
      <p class="simpara">
       Если не выполняются асинхронные запросы,
       это должно произойти, только если PHP-приложение неожиданно завершилось,
       и PHP автоматически закрывает соединение.
      </p>
     </div>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.init-command-executed-count"><code class="literal">init_command_executed_count</code></dt>
    <dd>
     <span class="simpara">
      Общее количество выполнений команды инициализации.
      Например: <code class="code">mysqli_options(MYSQLI_INIT_COMMAND , $value)</code>.
     </span>
     <span class="simpara">
      Количество успешных запусков — разность
      <code class="literal">init_command_executed_count - init_command_failed_count</code>.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.init-command-failed-count"><code class="literal">init_command_failed_count</code></dt>
    <dd>
     <span class="simpara">
      Общее количество неудачных команд инициализации.
     </span>
    </dd>
   
  </dl>

  <dl>
   <strong class="title"><code class="literal">Статистика команд COM_*</code></strong>

   
    <dt id="mysqlnd.stats.statistics.com"><code class="literal">com_quit</code></dt>
    <dt><code class="literal">com_init_db</code></dt>
    <dt><code class="literal">com_query</code></dt>
    <dt><code class="literal">com_field_list</code></dt>
    <dt><code class="literal">com_create_db</code></dt>
    <dt><code class="literal">com_drop_db</code></dt>
    <dt><code class="literal">com_refresh</code></dt>
    <dt><code class="literal">com_shutdown</code></dt>
    <dt><code class="literal">com_statistics</code></dt>
    <dt><code class="literal">com_process_info</code></dt>
    <dt><code class="literal">com_connect</code></dt>
    <dt><code class="literal">com_process_kill</code></dt>
    <dt><code class="literal">com_debug</code></dt>
    <dt><code class="literal">com_ping</code></dt>
    <dt><code class="literal">com_time</code></dt>
    <dt><code class="literal">com_delayed_insert</code></dt>
    <dt><code class="literal">com_change_user</code></dt>
    <dt><code class="literal">com_binlog_dump</code></dt>
    <dt><code class="literal">com_table_dump</code></dt>
    <dt><code class="literal">com_connect_out</code></dt>
    <dt><code class="literal">com_register_slave</code></dt>
    <dt><code class="literal">com_stmt_prepare</code></dt>
    <dt><code class="literal">com_stmt_execute</code></dt>
    <dt><code class="literal">com_stmt_send_long_data</code></dt>
    <dt><code class="literal">com_stmt_close</code></dt>
    <dt><code class="literal">com_stmt_reset</code></dt>
    <dt><code class="literal">com_stmt_set_option</code></dt>
    <dt><code class="literal">com_stmt_fetch</code></dt>
    <dt><code class="literal">com_daemon</code></dt>
    <dd>
     <span class="simpara">
      Общее количество попыток PHP отправить конкретную команду <code class="literal">COM_*</code>
      на MySQL-сервер.
     </span>
     <span class="simpara">
      Значение метрики увеличивается после проверки строки и сразу
      перед отправкой соответствующего пакета клиент-серверного протокола MySQL.
     </span>
     <div class="caution"><strong class="caution">Предостережение</strong>
      <p class="simpara">
       Если драйвер MySQLnd не сможет отправить пакет по сети, значение метрики не будет уменьшаться.
       При сбое драйвер MySQLnd выдаёт PHP-предупреждение
       <q class="quote">Error while sending %s packet. PID=%d.</q>
      </p>
     </div>

     <div class="example" id="example-3">
      <p><strong>Пример #3 Примеры использования</strong></p>
      <ul class="itemizedlist">
       <li class="listitem">
        <span class="simpara">
         Проверьте, отправляет ли PHP конкретные команды на MySQL-сервер, например:
         проверьте, отправляет ли клиент команду <code class="literal">COM_PROCESS_KILL</code>
        </span>
       </li>
       <li class="listitem">
        <span class="simpara">
         Вычислите среднее количество выполнений подготовленных операторов
         путём сравнения команду <code class="literal">COM_EXECUTE</code>
         с командой <code class="literal">COM_PREPARE</code>
        </span>
       </li>
       <li class="listitem">
        <span class="simpara">
         Выясните, не запускал ли PHP неподготовленные SQL-запросы
         путём проверки, равно ли значение команды <code class="literal">COM_QUERY</code> нулю
        </span>
       </li>
       <li class="listitem">
        <span class="simpara">
         Определите PHP-скрипты, которые запускают чрезмерное количество SQL-запросов
         путём проверки команд <code class="literal">COM_QUERY</code>
         и <code class="literal">COM_EXECUTE</code>
        </span>
       </li>
      </ul>
     </div>
    </dd>
   
  </dl>

  <dl>
   <strong class="title">Прочие статистические данные</strong>

   
    <dt id="mysqlnd.stats.statistics.stmt-close"><code class="literal">explicit_stmt_close</code></dt>
    <dt><code class="literal">implicit_stmt_close</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
     <span class="simpara">
      Общее количество закрытых подготовленных заявлений.
     </span>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Подготовленный запрос всегда явно закрыт. Единственный раз, когда он закрывается неявно, — когда подготовка не удалась.
      </span>
     </p></blockquote>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.memory-management"><code class="literal">mem_emalloc_count</code></dt>
    <dt><code class="literal">mem_emalloc_ammount</code></dt>
    <dt><code class="literal">mem_ecalloc_count</code></dt>
    <dt><code class="literal">mem_ecalloc_ammount</code></dt>
    <dt><code class="literal">mem_realloc_count</code></dt>
    <dt><code class="literal">mem_realloc_ammount</code></dt>
    <dt><code class="literal">mem_efree_count</code></dt>
    <dt><code class="literal">mem_malloc_count</code></dt>
    <dt><code class="literal">mem_malloc_ammount</code></dt>
    <dt><code class="literal">mem_calloc_count</code></dt>
    <dt><code class="literal">mem_calloc_ammount</code></dt>
    <dt><code class="literal">mem_ealloc_count</code></dt>
    <dt><code class="literal">mem_ealloc_ammount</code></dt>
    <dt><code class="literal">mem_free_count</code></dt>
    <dd>
     <span class="simpara">
      Это статистика уровня процесса.
     </span>
     <span class="simpara">
      Вызовы управления памятью.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.command-buffer-too-small"><code class="literal">command_buffer_too_small</code></dt>
    
    <dd>
     <span class="simpara">
      Количество модулей сетевого буфера команд при отправке команд из PHP на сервер MySQL.
     </span>
     <span class="simpara">
      Драйвер mysqlnd выделяет для каждого подключения внутренний командный или сетевой буфер,
      размер которого задали в байтах в опции конфигурации
      <a href="mysqlnd.config.php#ini.mysqlnd.net-cmd-buffer-size" class="link">mysqlnd.net_cmd_buffer_size</a>.
     </span>
     <span class="simpara">
      Драйвер MySQLnd увеличит размер буфера до размера,
      который требуется для отправки команды,
      если команда протокола MySQL Client Server наподобие <code class="literal">COM_QUERY</code>
      (обычный запрос) не помещается в буфер.
      Каждый раз при расширении буфера для одного соединения
      метрика <code class="literal">command_buffer_too_small</code> увеличивается на единицу.
     </span>
     <span class="simpara">
      Если драйверу MySQLnd приходится увеличивать размер буфера сверх первоначального размера,
      который задали в байтах в опции <a href="mysqlnd.config.php#ini.mysqlnd.net-cmd-buffer-size" class="link">mysqlnd.net_cmd_buffer_size</a>,
      почти для каждого соединения,
      размер по умолчанию для буфера увеличивают, чтобы избежать перераспределения памяти.
     </span>
    </dd>
   

   
    <dt id="mysqlnd.stats.statistics.connection-reused"><code class="literal">connection_reused</code></dt>
    <dd>
     <span class="simpara">
      Общее количество переиспользований постоянного соединения.
     </span>
    </dd>
   
  </dl>
 </div>
</div>
<?php manual_footer($setup); ?>