1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/mysqlnd/stats.xml
2024-05-14 02:07:55 +03:00

1651 lines
73 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 55089a115125366b79adbd0f99299d53e561fc10 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mysqlnd.stats" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Статистика</title>
<para>
MySQL Native Driver поддерживает сбор статистики по взаимодействию
клиента с сервером. Статистические данные собираются с двух основных точек:
<itemizedlist>
<listitem>
<simpara>Клиентская статистика</simpara>
</listitem>
<listitem>
<simpara>Статистика соединения</simpara>
</listitem>
</itemizedlist>
</para>
<para>
При работе с модулем <link linkend="book.mysqli">mysqli</link> эти статистические данные получают через два API-вызова:
<itemizedlist>
<listitem>
<simpara><function>mysqli_get_client_stats</function></simpara>
</listitem>
<listitem>
<simpara><function>mysqli_get_connection_stats</function></simpara>
</listitem>
</itemizedlist>
</para>
<note>
<simpara>
Статистика агрегируется по всем расширениям, которые используют драйвер MySQL Native
Driver.
Например, если модуль <link linkend="book.mysqli">mysqli</link>
и драйвер PDO MySQL настроены на работу с драйвером MySQLnd,
тогда вызовы функций модуля <link linkend="book.mysqli">mysqli</link>
и вызовы методов класса PDO будут влиять на статистику.
</simpara>
<simpara>
Нет способа узнать, насколько конкретный вызов API модуля,
который скомпилировали с драйвером MySQL Native Driver, повлиял на конкретную
статистику.
</simpara>
</note>
<section xml:id="mysqlnd.stats.retrieve" annotations="chunk:false">
<title>Получение статистики</title>
<simpara>
Клиентскую статистику получают через вызов функции
<function>mysqli_get_client_stats</function>.
</simpara>
<simpara>
Статистику соединения получают через вызов функции
<function>mysqli_get_connection_stats</function>.
</simpara>
<simpara>
Обе функции возвращают ассоциативный массив,
в котором метрики статистики — ключи, которые
соответствуют статистическим данным.
</simpara>
</section>
<section xml:id="mysqlnd.stats.statistics" annotations="chunk:false">
<title>Статистика драйвера MySQL Native Driver</title>
<simpara>
Бо́льшая часть статистических данных связана с подключением,
но отдельные данные связаны с процессом, и тогда это упоминается.
<!-- Process running the server? -->
</simpara>
<simpara>
Следующая статистика выдается драйвером MySQL Native Driver:
</simpara>
<variablelist>
<title>Сетевая статистика</title>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-sent">
<term><literal>bytes_sent</literal></term>
<listitem>
<simpara>
Количество байтов, которые PHP отправил MySQL-серверу.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received">
<term><literal>bytes_received</literal></term>
<listitem>
<simpara>
Количество байтов, которые PHP получил от MySQL-сервера.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-sent">
<term><literal>packets_sent</literal></term>
<listitem>
<simpara>
Количество пакетов, которые отправили по протоколу MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received">
<term><literal>packets_received</literal></term>
<listitem>
<simpara>
Количество пакетов, которые получили по протоколу MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.protocol-overhead-in">
<term><literal>protocol_overhead_in</literal></term>
<listitem>
<simpara>
Накладные расходы протокола MySQL Client Server в байтах для входящего трафика.
Пока накладными расходами признаётся только заголовок Packet Header (4 байта).
<code>protocol_overhead_in = packets_received * 4</code>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.protocol-overhead-out">
<term><literal>protocol_overhead_out</literal></term>
<listitem>
<simpara>
Накладные расходы протокола MySQL Client Server в байтах для исходящего трафика.
Пока накладными расходами признаётся только заголовок Packet Header (4 байта).
<code>protocol_overhead_out = packets_received * 4</code>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-ok-packet">
<term><literal>bytes_received_ok_packet</literal></term>
<listitem>
<simpara>
Общий размер полученных пакетов OK протокола MySQL Client Server в байтах.
Пакеты OK могут содержать сообщение о состоянии.
Длина сообщения о состоянии может варьироваться, и, следовательно, размер
пакета OK не фиксирован.
</simpara>
<note>
<simpara>
Общий размер в байтах включает размер пакета заголовка
(4 байта, см. накладные расходы протокола).
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-ok">
<term><literal>packets_received_ok</literal></term>
<listitem>
<simpara>
Количество полученных пакетов OK протокола MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-eof-packet">
<term><literal>bytes_received_eof_packet</literal></term>
<listitem>
<simpara>
Общий размер полученных пакетов EOF протокола MySQL Client Server в байтах.
Размер пакетов EOF варьируется в зависимости от версии сервера.
Кроме того, пакет EOF может передавать сообщение об ошибке.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.bytes-received-ok-packet')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-eof">
<term><literal>packets_received_eof</literal></term>
<listitem>
<simpara>
Количество пакетов EOF протокола MySQL Client Server.
</simpara>
<simpara>
Как и в случае с другой статистикой пакетов, количество пакетов будет
увеличиваться, даже если PHP получит не ожидаемый пакет,
а, например, сообщение об ошибке.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-rset-header-packet">
<term><literal>bytes_received_rset_header_packet</literal></term>
<listitem>
<simpara>
Общий размер результирующего набора пакетов заголовков протокола
MySQL Client Server в байтах.
Размер пакетов варьируется в зависимости от полезной нагрузки
(инструкции <literal>LOAD LOCAL INFILE</literal>, <literal>INSERT</literal>,
<literal>UPDATE</literal>, <literal>SELECT</literal>, сообщение об ошибке).
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.bytes-received-ok-packet')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-rset-header">
<term><literal>packets_received_rset_header</literal></term>
<listitem>
<simpara>
Количество пакетов заголовков результирующего набора протокола MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-rset-field-meta-packet">
<term><literal>bytes_received_rset_field_meta_packet</literal></term>
<listitem>
<simpara>
Общий размер пакетов метаданных (информации о столбце) результирующего набора протокола
MySQL Client Server в байтах.
Конечно, размер зависит от столбцов в наборе результатов.
Пакет также может передавать ошибку или пакет EOF в случае
пакета COM_LIST_FIELDS.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.bytes-received-ok-packet')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-rset-field-meta">
<term><literal>packets_received_rset_field_meta</literal></term>
<listitem>
<simpara>
Количество пакетов метаданных (информации о столбце) результирующего набора протокола
MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-rset-row-packet">
<term><literal>bytes_received_rset_row_packet</literal></term>
<listitem>
<simpara>
Общий размер пакетов данных строки результирующего набора протокола MySQL Client Server
в байтах.
Пакет также может передавать ошибку или пакет EOF.
Можно вычислить количество ошибок и пакетов EOF путём вычитания
метрик <literal>rows_fetched_from_server_normal</literal>
и <literal>rows_fetched_from_server_ps</literal>
из метрики <literal>bytes_received_rset_row_packet</literal>.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.bytes-received-ok-packet')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-rset-row">
<term><literal>packets_received_rset_row</literal></term>
<listitem>
<simpara>
Количество пакетов данных строки результирующего набора протокола
MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-prepare-response-packet">
<term><literal>bytes_received_prepare_response_packet</literal></term>
<listitem>
<simpara>
Общий размер пакетов OK протокола MySQL Client Server для инициализации подготовленного запроса
(init-пакеты подготовленного запроса) в байтах.
Пакет также может передавать сообщение об ошибке.
Размер пакета зависит от версии MySQL-сервера.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.bytes-received-ok-packet')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-prepare-response">
<term><literal>packets_received_prepare_response</literal></term>
<listitem>
<simpara>
Количество пакетов OK протокола MySQL Client Server для инициализации подготовленного
запроса (init-пакеты подготовленного запроса).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-change-user-packet">
<term><literal>bytes_received_change_user_packet</literal></term>
<listitem>
<simpara>
Общий размер пакетов COM_CHANGE_USER протокола MySQL Client Server protocol в байтах.
Пакет также может передавать ошибку или состояние EOF.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.bytes-received-ok-packet')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-received-change-user">
<term><literal>packets_received_change_user</literal></term>
<listitem>
<simpara>
Количество пакетов COM_CHANGE_USER протокола MySQL Client Server.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.packets-sent-command">
<term><literal>packets_sent_command</literal></term>
<listitem>
<simpara>
Количество команд протокола MySQL Client Server, которые отправил PHP на MySQL-сервер.
</simpara>
<simpara>
Нет способа узнать, какие именно команды и сколько из них отправил PHP.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-real-data_normal">
<term><literal>bytes_received_real_data_normal</literal></term>
<listitem>
<simpara>
Количество байтов полезной нагрузки, которые получил PHP-клиент
от драйвера <literal>mysqlnd</literal> по текстовому протоколу.
</simpara>
<simpara>
Это размер фактических данных, которые содержатся в наборах результатов, которые
не исходят из подготовленных запросов и которые получил PHP-клиент.
</simpara>
<simpara>
Обратите внимание, что, хотя полный результирующий набор мог быть получен от MySQL-сервера
через драйвер <literal>mysqlnd</literal>, в этой статистике учитываются только фактические данные,
которые PHP-клиент получил от дайвера <literal>mysqlnd</literal>.
</simpara>
<para>
Пример последовательности кода, которая увеличивает значение, выглядит следующим образом:
<programlisting>
<![CDATA[
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->fetch_assoc();
$res->close();
]]>
</programlisting>
Каждая операция извлечения будет увеличивать значение.
</para>
<para>
Однако значение метрики не будет увеличено, если результирующий набор только
буферизуется на клиенте, но не извлекается, как, например, в следующем примере:
<programlisting>
<![CDATA[
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->close();
]]>
</programlisting>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bytes-received-real-data-ps">
<term><literal>bytes_received_real_data_ps</literal></term>
<listitem>
<simpara>
Количество байтов полезной нагрузки, которую получил PHP-клиент
от драйвера <literal>mysqlnd</literal> по протоколу подготовленного запроса.
</simpara>
<simpara>
Это размер фактических данных, которые содержатся в наборах результатов, которые
не исходят из подготовленных запросов и которые получил PHP-клиент.
</simpara>
<simpara>
Модуль не увеличит значение, если PHP-клиент впоследствии не прочитает набор результатов.
</simpara>
<simpara>
Обратите внимание, что, хотя полный результирующий набор мог быть получен от MySQL-сервера
через драйвер <literal>mysqlnd</literal>, в этой статистике учитываются только фактические данные,
которые PHP-клиент получил от драйвера <literal>mysqlnd</literal>.
</simpara>
<simpara>
Смотрите также описание метрики <literal>bytes_received_real_data_normal</literal>.
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Статистические данные результирующего набора</title>
<varlistentry xml:id="mysqlnd.stats.statistics.result-set-queries">
<term><literal>result_set_queries</literal></term>
<listitem>
<simpara>
Количество запросов, которые сгенерировали набор результатов.
Примеры запросов, которые генерируют результирующий набор:
<literal>SELECT</literal>, <literal>SHOW</literal>.
</simpara>
<simpara>
Модуль не увеличивает значение метрики, если произойдет ошибка при чтении
пакета заголовка результирующего набора из строки.
</simpara>
<note>
<simpara>
Этой статистикой пользуются как косвенным показателем
количества запросов, которые PHP отправил на MySQL-сервер.
Это помогает определить клиента, который вызывает высокую нагрузку на базу данных.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.non-result-set-queries">
<term><literal>non_result_set_queries</literal></term>
<listitem>
<simpara>
Количество запросов, которые не создали набор результатов.
Примеры запросов, которые не генерируют набор результатов:
<literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>LOAD DATA</literal>.
</simpara>
<simpara>
Модуль не увеличивает значение метрики, если произойдет ошибка при считывании
пакета заголовка результирующего набора из строки.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.result-set-queries')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.no-index-used">
<term><literal>no_index_used</literal></term>
<listitem>
<simpara>
Количество запросов, которые создали набор результатов, но не использовали индекс.
(Смотрите также параметр запуска <literal>--log-queries-not-using-indexes</literal> команды mysqld).
</simpara>
<note>
<simpara>
Об этих запросах сообщают через исключение, для чего вызывают
<code>mysqli_report(MYSQLI_REPORT_INDEX);</code>.
Вместо этого можно сообщить о них через предупреждения путём вызова
<code>mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);</code>.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.bad-index-used">
<term><literal>bad_index_used</literal></term>
<listitem>
<simpara>
Количество запросов, которые сгенерировали набор результатов без хорошего индекса.
(Смотрите также параметр запуска <literal>--log-slow-queries</literal> команды mysqld).
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.no-index-used')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.slow-queries">
<term><literal>slow_queries</literal></term>
<listitem>
<simpara>
SQL-запросы, выполнение которых заняло больше секунд, чем значение параметра <literal>long_query_time</literal>,
и для проверки которых требовало как минимум такое количество строк,
которое задали в параметре <literal>min_examined_row_limit</literal>.
</simpara>
<caution>
<simpara>
Не сообщается через функцию <function>mysqli_report</function>.
</simpara>
</caution>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.buffered-sets">
<term><literal>buffered_sets</literal></term>
<listitem>
<simpara>
Количество буферизованных результирующих наборов, которые возвращают обычные
неподготовленные запросы.
</simpara>
<para>
Примеры вызовов API, которые буферизуют наборы результатов на клиенте:
<simplelist type="inline">
<member><function>mysqli_query</function></member>
<member><function>mysqli_store_result</function></member>
<member><function>mysqli_stmt_get_result</function></member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.unbuffered-sets">
<term><literal>unbuffered_sets</literal></term>
<listitem>
<simpara>
Количество небуферизованных результирующих наборов, которые возвращают обычные
неподготовленные запросы.
</simpara>
<para>
Примеры вызовов API, которые не буферизуют наборы результатов на клиенте:
<simplelist type="inline">
<member><function>mysqli_use_result</function></member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.ps-buffered-sets">
<term><literal>ps_buffered_sets</literal></term>
<listitem>
<simpara>
Количество буферизованных наборов результатов, которые возвращают подготовленные запросы.
</simpara>
<para>
Примеры вызовов API, которые буферизуют наборы результатов на клиенте:
<simplelist type="inline">
<member><function>mysqli_stmt_store_result</function></member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.ps-unbuffered-sets">
<term><literal>ps_unbuffered_sets</literal></term>
<listitem>
<simpara>
Количество небуферизованных наборов результатов, которые возвращают подготовленные запросы.
</simpara>
<simpara>
По умолчанию подготовленные запросы не буферизуются,
поэтому эта метрика учтёт большинство подготовленных запросов.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.flushed-normal-sets">
<term><literal>flushed_normal_sets</literal></term>
<listitem>
<simpara>
Количество результирующих наборов, которые возвращают обычные
неподготовленные запросы с непрочитанными данными,
которые были без предупреждения сброшены.
</simpara>
<note>
<simpara>
Модуль сбрасывает только небуферизованные наборы результатов.
</simpara>
<simpara>
Небуферизованные результирующие наборы должны быть полностью получены перед
выполнением нового запроса по соединению, иначе
MySQL-сервер выдаст ошибку. Если приложение не извлекает
все строки из небуферизованного результирующего набора, команда mysqlnd
неявно извлекает результирующий набор, чтобы очистить строку.
</simpara>
<simpara>
Смотрите также описание метрик <literal>rows_skipped_normal</literal>, <literal>rows_skipped_ps</literal>.
</simpara>
<para>
Некоторые причины неявного сброса:
<itemizedlist>
<listitem>
<simpara>
Ошибка клиентского приложения
</simpara>
</listitem>
<listitem>
<simpara>
Клиент прекратил чтение данных, когда нашёл то, что искал,
но заставил MySQL-сервер вычислять больше записей, чем требуется
</simpara>
</listitem>
<listitem>
<simpara>
Клиентское приложение неожиданно остановилось
</simpara>
</listitem>
</itemizedlist>
</para>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.flushed-ps-sets">
<term><literal>flushed_ps_sets</literal></term>
<listitem>
<simpara>
Количество результирующих наборов с непрочитанными данными, которые вернули
подготовленные запросы и которые были без предупреждения сброшены.
</simpara>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd.stats.statistics.flushed-normal-sets')/db:listitem/db:note)">
<xi:fallback/>
</xi:include>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.ps-prepared-never-executed">
<term><literal>ps_prepared_never_executed</literal></term>
<listitem>
<simpara>
Количество запросов, которые подготовили, но не выполнили.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.ps-prepared-once-executed">
<term><literal>ps_prepared_once_executed</literal></term>
<listitem>
<simpara>
Количество подготовленных запросов, которые выполнили только один раз.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-fetched-from-server-normal">
<term><literal>rows_fetched_from_server_normal</literal></term>
<term><literal>rows_fetched_from_server_ps</literal></term>
<listitem>
<simpara>
Общее количество строк результирующего набора, которые вернул сервер.
Сюда входят строки, которые клиент не прочитал,
но неявно получил из-за сброшенных небуферизованных результирующих наборов.
</simpara>
<simpara>
Смотрите также описание метрики <literal>packets_received_rset_row</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-buffered-from-server-normal">
<term><literal>rows_buffered_from_client_normal</literal></term>
<listitem>
<simpara>
Общее количество буферизованных строк, которые получили в результате обычного запроса.
</simpara>
<simpara>
Это количество строк, которые вернул MySQL-сервер и буферизовал клиент.
</simpara>
<para>
Примеры запросов, которые буферизуют результаты:
<simplelist>
<member><function>mysqli_query</function></member>
<member><function>mysqli_store_result</function></member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-buffered-from-server-ps">
<term><literal>rows_buffered_from_server_ps</literal></term>
<listitem>
<simpara>
То же, что и метрика <literal>rows_buffered_from_client_normal</literal>,
но для подготовленных запросов.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-fetched-from-client-normal-buffered">
<term><literal>rows_fetched_from_client_normal_buffered</literal></term>
<listitem>
<simpara>
Общее количество строк, которые извлёк клиент из буферизованного результирующего набора,
который создал обычный запрос.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-fetched-from-client-ps-buffered">
<term><literal>rows_fetched_from_client_ps_buffered</literal></term>
<listitem>
<simpara>
Общее количество строк, которые извлёк клиент из буферизованного результирующего набора,
который создал подготовленный запрос.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-fetched-from-client-normal-unbuffered">
<term><literal>rows_fetched_from_client_normal_unbuffered</literal></term>
<listitem>
<simpara>
Общее количество строк, которые извлёк клиент из небуферизованного результирующего набора,
который создал обычный запрос.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-fetched-from-client-ps-unbuffered">
<term><literal>rows_fetched_from_client_ps_unbuffered</literal></term>
<listitem>
<simpara>
Общее количество строк, которые извлёк клиент из небуферизованного результирующего набора,
который создал подготовленный запрос.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.rows-fetched-from-client-ps-cursor">
<term><literal>rows_fetched_from_client_ps_cursor</literal></term>
<listitem>
<simpara>
Общее количество строк, которые клиент извлёк из курсора,
который создал подготовленный запрос.
</simpara>
</listitem>
</varlistentry>
<!-- TODO: This seems to actually be supported, check and document -->
<varlistentry xml:id="mysqlnd.stats.statistics.rows-skipped-normal">
<term><literal>rows_skipped_normal</literal></term>
<term><literal>rows_skipped_ps</literal></term>
<listitem>
<simpara>
Метрику зарезервировали для будущих нужд (пока не поддерживается).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.copy-on-write">
<term><literal>copy_on_write_saved</literal></term>
<term><literal>copy_on_write_performed</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
<simpara>
При запуске команды mysqlnd переменные, которые возвращает модуль, указывают
на внутренние сетевые буферы результатов команды mysqlnd.
Если данные не изменяются, извлеченные данные сохраняются в памяти только один раз.
Однако для внесения изменений в данные потребуется, чтобы команда mysqlnd выполнила
операцию копирования при записи.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.free-result">
<term><literal>explicit_free_result</literal></term>
<term><literal>implicit_free_result</literal></term>
<listitem>
<simpara>
Это статистика уровня соединения и процесса.
</simpara>
<simpara>
Общее количество высвобожденных результирующих наборов.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-null">
<term><literal>proto_text_fetched_null</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_NULL</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-null">
<term><literal>proto_binary_fetched_null</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_NULL</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-bit">
<term><literal>proto_text_fetched_bit</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_BIT</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-bit">
<term><literal>proto_binary_fetched_bit</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_BIT</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-tinyint">
<term><literal>proto_text_fetched_tinyint</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TINY</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-tinyint">
<term><literal>proto_binary_fetched_tinyint</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TINY</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-short">
<term><literal>proto_text_fetched_short</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_SHORT</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-short">
<term><literal>proto_binary_fetched_short</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_SHORT</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-int24">
<term><literal>proto_text_fetched_int24</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_INT24</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-int24">
<term><literal>proto_binary_fetched_int24</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_INT24</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-int">
<term><literal>proto_text_fetched_int</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_LONG</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-int">
<term><literal>proto_binary_fetched_int</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_LONG</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-bigint">
<term><literal>proto_text_fetched_bigint</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_LONGLONG</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-bigint">
<term><literal>proto_binary_fetched_bigint</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_LONGLONG</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-decimal">
<term><literal>proto_text_fetched_decimal</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DECIMAL</literal> или <literal>MYSQL_TYPE_NEWDECIMAL</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-decimal">
<term><literal>proto_binary_fetched_decimal</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DECIMAL</literal> или <literal>MYSQL_TYPE_NEWDECIMAL</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-float">
<term><literal>proto_text_fetched_float</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_FLOAT</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-float">
<term><literal>proto_binary_fetched_float</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_FLOAT</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-double">
<term><literal>proto_text_fetched_double</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DOUBLE</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-double">
<term><literal>proto_binary_fetched_double</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DOUBLE</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-date">
<term><literal>proto_text_fetched_date</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DATE</literal> или <literal>MYSQL_TYPE_NEWDATE</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-date">
<term><literal>proto_binary_fetched_date</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DATE</literal> или <literal>MYSQL_TYPE_NEWDATE</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-year">
<term><literal>proto_text_fetched_year</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_YEAR</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-year">
<term><literal>proto_binary_fetched_year</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_YEAR</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-time">
<term><literal>proto_text_fetched_time</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TIME</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-time">
<term><literal>proto_binary_fetched_time</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TIME</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-datetime">
<term><literal>proto_text_fetched_datetime</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DATETIME</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-datetime">
<term><literal>proto_binary_fetched_datetime</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_DATETIME</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-timestamp">
<term><literal>proto_text_fetched_timestamp</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TIMESTAMP</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-timestamp">
<term><literal>proto_binary_fetched_timestamp</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TIMESTAMP</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-string">
<term><literal>proto_text_fetched_string</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_STRING</literal>, <literal>MYSQL_TYPE_VARSTRING</literal> или <literal>MYSQL_TYPE_VARCHAR</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-string">
<term><literal>proto_binary_fetched_string</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_STRING</literal>, <literal>MYSQL_TYPE_VARSTRING</literal> или <literal>MYSQL_TYPE_VARCHAR</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-blob">
<term><literal>proto_text_fetched_blob</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TINY_BLOB</literal>,
<literal>MYSQL_TYPE_MEDIUM_BLOB</literal>,
<literal>MYSQL_TYPE_LONG_BLOB</literal>
или <literal>MYSQL_TYPE_BLOB</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-blob">
<term><literal>proto_binary_fetched_blob</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_TINY_BLOB</literal>,
<literal>MYSQL_TYPE_MEDIUM_BLOB</literal>,
<literal>MYSQL_TYPE_LONG_BLOB</literal>
или <literal>MYSQL_TYPE_BLOB</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-enum">
<term><literal>proto_text_fetched_enum</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_ENUM</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-enum">
<term><literal>proto_binary_fetched_enum</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_ENUM</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-set">
<term><literal>proto_text_fetched_set</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_SET</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-set">
<term><literal>proto_binary_fetched_set</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_SET</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-geometry">
<term><literal>proto_text_fetched_geometry</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_GEOMETRY</literal>,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-geometry">
<term><literal>proto_binary_fetched_geometry</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_GEOMETRY</literal>,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-text-fetched-other">
<term><literal>proto_text_fetched_other</literal></term>
<listitem>
<simpara>
Общее количество столбцов типов
<literal>MYSQL_TYPE_<replaceable>*</replaceable></literal>,
не перечисленных ранее,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
</simpara>
<note>
<simpara>
Теоретически значение всегда должно равняться <literal>0</literal>.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.proto-binary-fetched-other">
<term><literal>proto_binary_fetched_other</literal></term>
<listitem>
<simpara>
Общее количество столбцов типа
<literal>MYSQL_TYPE_<replaceable>*</replaceable></literal>,
не включённых ранее,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
</simpara>
<note>
<simpara>
Теоретически, значение всегда должно равняться <literal>0</literal>.
</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Статистические данные соединения</title>
<varlistentry xml:id="mysqlnd.stats.statistics.connect-success">
<term><literal>connect_success</literal></term>
<listitem>
<simpara>
Общее количество успешных попыток подключения.
</simpara>
<note>
<simpara>
<literal>connect_success</literal> содержит сумму
успешных постоянных и непостоянных попыток подключения.
Следовательно, количество успешных попыток непостоянного подключения равно
разности <literal>connect_success - pconnect_success</literal>.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.pconnect-success">
<term><literal>pconnect_success</literal></term>
<listitem>
<simpara>
Общее количество успешных попыток постоянного подключения.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.connect-failure">
<term><literal>connect_failure</literal></term>
<listitem>
<simpara>
Общее количество неудачных попыток подключения.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.reconnect">
<term><literal>reconnect</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.active-connections">
<term><literal>active_connections</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
<simpara>
Общее количество активных постоянных и непостоянных подключений.
</simpara>
<note>
<simpara>
Общее количество активных непостоянных соединений равно
разности <literal>active_connections - active_persistent_connections</literal>.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.active-persistent-connections">
<term><literal>active_persistent_connections</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
<simpara>
Общее количество активных постоянных соединений.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.explicit-close">
<term><literal>explicit_close</literal></term>
<listitem>
<simpara>
Общее количество явно закрытых соединений.
</simpara>
<example>
<title>Примеры фрагментов кода, которые вызывают явное закрытие</title>
<itemizedlist>
<listitem>
<programlisting>
<![CDATA[
$link = new mysqli(/* ... */);
$link->close(/* ... */);
]]>
</programlisting>
</listitem>
<listitem>
<programlisting>
<![CDATA[
$link = new mysqli(/* ... */);
$link->connect(/* ... */);
]]>
</programlisting>
</listitem>
</itemizedlist>
</example>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.implicit-close">
<term><literal>implicit_close</literal></term>
<listitem>
<simpara>
Общее количество неявно закрытых соединений.
</simpara>
<example>
<title>Примеры фрагментов кода, которые вызывают неявное закрытие</title>
<itemizedlist>
<listitem>
<programlisting>
<![CDATA[
$link = new mysqli(/* ... */);
$link->real_connect(/* ... */);
]]>
</programlisting>
</listitem>
<listitem>
<programlisting>
<code>unset($link)</code>
</programlisting>
</listitem>
<listitem>
<simpara>
Постоянное соединение: объединенное соединение создали методом
real_connect, и, возможно, установили неизвестный набор опций, — закрывается
неявно, чтобы избежать возврата соединения с неизвестными параметрами
</simpara>
</listitem>
<listitem>
<simpara>
Persistent connection: ping/change_user завершается неудачно, а ext/mysqli
закрывает соединение
</simpara>
</listitem>
<listitem>
<simpara>
Окончание работы скрипта: закрываются соединения,
которые пользователь не закрыл явно
</simpara>
</listitem>
</itemizedlist>
</example>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.disconnect-close">
<term><literal>disconnect_close</literal></term>
<listitem>
<simpara>
Сбои подключения, на которые указывает вызов метода API-интерфейса языка C
<literal>mysql_real_connect</literal> при попытке
установить соединение.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.in-middle-of-command-close">
<term><literal>in_middle_of_command_close</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
<simpara>
Соединение прервалось в середине выполнения команды
(не были получены выдающиеся результирующие наборы после отправки запроса
и до получения ответа, во время получения данных, во время
передачи данных через LOAD DATA).
</simpara>
<warning>
<simpara>
Если не выполняются асинхронные запросы,
это должно произойти, только если PHP-приложение неожиданно завершилось,
и PHP автоматически закрывает соединение.
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.init-command-executed-count">
<term><literal>init_command_executed_count</literal></term>
<listitem>
<simpara>
Общее количество выполнений команды инициализации.
Например: <code>mysqli_options(MYSQLI_INIT_COMMAND , $value)</code>.
</simpara>
<simpara>
Количество успешных запусков — разность
<literal>init_command_executed_count - init_command_failed_count</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.init-command-failed-count">
<term><literal>init_command_failed_count</literal></term>
<listitem>
<simpara>
Общее количество неудачных команд инициализации.
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<title><literal>Статистика команд COM_*</literal></title>
<varlistentry xml:id="mysqlnd.stats.statistics.com">
<term><literal>com_quit</literal></term>
<term><literal>com_init_db</literal></term>
<term><literal>com_query</literal></term>
<term><literal>com_field_list</literal></term>
<term><literal>com_create_db</literal></term>
<term><literal>com_drop_db</literal></term>
<term><literal>com_refresh</literal></term>
<term><literal>com_shutdown</literal></term>
<term><literal>com_statistics</literal></term>
<term><literal>com_process_info</literal></term>
<term><literal>com_connect</literal></term>
<term><literal>com_process_kill</literal></term>
<term><literal>com_debug</literal></term>
<term><literal>com_ping</literal></term>
<term><literal>com_time</literal></term>
<term><literal>com_delayed_insert</literal></term>
<term><literal>com_change_user</literal></term>
<term><literal>com_binlog_dump</literal></term>
<term><literal>com_table_dump</literal></term>
<term><literal>com_connect_out</literal></term>
<term><literal>com_register_slave</literal></term>
<term><literal>com_stmt_prepare</literal></term>
<term><literal>com_stmt_execute</literal></term>
<term><literal>com_stmt_send_long_data</literal></term>
<term><literal>com_stmt_close</literal></term>
<term><literal>com_stmt_reset</literal></term>
<term><literal>com_stmt_set_option</literal></term>
<term><literal>com_stmt_fetch</literal></term>
<term><literal>com_daemon</literal></term>
<listitem>
<simpara>
Общее количество попыток PHP отправить конкретную команду <literal>COM_*</literal>
на MySQL-сервер.
</simpara>
<simpara>
Значение метрики увеличивается после проверки строки и сразу
перед отправкой соответствующего пакета клиент-серверного протокола MySQL.
</simpara>
<caution>
<simpara>
Если драйвер MySQLnd не сможет отправить пакет по сети, значение метрики не будет уменьшаться.
При сбое драйвер MySQLnd выдаёт PHP-предупреждение
<quote>Error while sending %s packet. PID=%d.</quote>
</simpara>
</caution>
<example>
<title>Примеры использования</title>
<itemizedlist>
<listitem>
<para>
Проверьте, отправляет ли PHP конкретные команды на MySQL-сервер, например:
проверьте, отправляет ли клиент команду <literal>COM_PROCESS_KILL</literal>
</para>
</listitem>
<listitem>
<para>
Вычислите среднее количество выполнений подготовленных операторов
путём сравнения команду <literal>COM_EXECUTE</literal>
с командой <literal>COM_PREPARE</literal>
</para>
</listitem>
<listitem>
<para>
Выясните, не запускал ли PHP неподготовленные SQL-запросы
путём проверки, равно ли значение команды <literal>COM_QUERY</literal> нулю
</para>
</listitem>
<listitem>
<para>
Определите PHP-скрипты, которые запускают чрезмерное количество SQL-запросов
путём проверки команд <literal>COM_QUERY</literal>
и <literal>COM_EXECUTE</literal>
</para>
</listitem>
</itemizedlist>
</example>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>Прочие статистические данные</title>
<varlistentry xml:id="mysqlnd.stats.statistics.stmt-close">
<term><literal>explicit_stmt_close</literal></term>
<term><literal>implicit_stmt_close</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
<simpara>
Общее количество закрытых подготовленных заявлений.
</simpara>
<note>
<simpara>
Подготовленный запрос всегда явно закрыт. Единственный раз, когда он закрывается неявно, — когда подготовка не удалась.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.memory-management">
<term><literal>mem_emalloc_count</literal></term>
<term><literal>mem_emalloc_ammount</literal></term>
<term><literal>mem_ecalloc_count</literal></term>
<term><literal>mem_ecalloc_ammount</literal></term>
<term><literal>mem_realloc_count</literal></term>
<term><literal>mem_realloc_ammount</literal></term>
<term><literal>mem_efree_count</literal></term>
<term><literal>mem_malloc_count</literal></term>
<term><literal>mem_malloc_ammount</literal></term>
<term><literal>mem_calloc_count</literal></term>
<term><literal>mem_calloc_ammount</literal></term>
<term><literal>mem_ealloc_count</literal></term>
<term><literal>mem_ealloc_ammount</literal></term>
<term><literal>mem_free_count</literal></term>
<listitem>
<simpara>
Это статистика уровня процесса.
</simpara>
<simpara>
Вызовы управления памятью.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.command-buffer-too-small">
<term><literal>command_buffer_too_small</literal></term>
<!-- TODO: XInclude/sync description of INI setting
ini.mysqlnd.net-cmd-buffer-size with this statistic -->
<listitem>
<simpara>
Количество модулей сетевого буфера команд при отправке команд из PHP на сервер MySQL.
</simpara>
<simpara>
Драйвер mysqlnd выделяет для каждого подключения внутренний командный или сетевой буфер,
размер которого задали в байтах в опции конфигурации
<link linkend="ini.mysqlnd.net-cmd-buffer-size">mysqlnd.net_cmd_buffer_size</link>.
</simpara>
<simpara>
Драйвер MySQLnd увеличит размер буфера до размера,
который требуется для отправки команды,
если команда протокола MySQL Client Server наподобие <literal>COM_QUERY</literal>
(обычный запрос) не помещается в буфер.
Каждый раз при расширении буфера для одного соединения
метрика <literal>command_buffer_too_small</literal> увеличивается на единицу.
</simpara>
<simpara>
Если драйверу MySQLnd приходится увеличивать размер буфера сверх первоначального размера,
который задали в байтах в опции <link linkend="ini.mysqlnd.net-cmd-buffer-size">mysqlnd.net_cmd_buffer_size</link>,
почти для каждого соединения,
размер по умолчанию для буфера увеличивают, чтобы избежать перераспределения памяти.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="mysqlnd.stats.statistics.connection-reused">
<term><literal>connection_reused</literal></term>
<listitem>
<simpara>
Общее количество переиспользований постоянного соединения.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->