MySQL Native Driver поддерживает сбор статистики по взаимодействию клиента с сервером. Статистические данные собираются с двух основных точек:
Клиентская статистика
Статистика соединения
При работе с модулем mysqli эти статистические данные получают через два API-вызова:
Замечание:
Статистика агрегируется по всем расширениям, которые работают через драйвер MySQL Native Driver. Например, при настройке модуля mysqli и MySQL-драйвера модуля PDO на работу с драйвером MySQLnd вызовы функций модуля mysqli и вызовы методов класса PDO влияют на статистику.
Невозможно узнать, насколько конкретный API-вызов модуля, который скомпилировали с драйвером MySQL Native Driver, повлиял на конкретную статистику.
Клиентскую статистику получают через вызов функции mysqli_get_client_stats().
Статистику соединения получают через вызов функции mysqli_get_connection_stats().
Обе функции возвращают ассоциативный массив, в котором метрики статистики — ключи, которые соответствуют статистическим данным.
Бо́льшая часть статистических данных связана с подключением, но отдельные данные связаны с процессом, и тогда это упоминается.
Следующая статистика выдается драйвером MySQL Native Driver:
bytes_sentКоличество байтов, которые PHP отправил MySQL-серверу.
bytes_receivedКоличество байтов, которые PHP получил от MySQL-сервера.
packets_sentКоличество пакетов, которые отправили по протоколу MySQL Client Server.
packets_receivedКоличество пакетов, которые получили по протоколу MySQL Client Server.
protocol_overhead_in
Накладные расходы протокола MySQL Client Server в байтах для входящего трафика.
Пока накладными расходами признаётся только заголовок Packet Header (4 байта).
protocol_overhead_in = packets_received * 4
protocol_overhead_out
Накладные расходы протокола MySQL Client Server в байтах для исходящего трафика.
Пока накладными расходами признаётся только заголовок Packet Header (4 байта).
protocol_overhead_out = packets_received * 4
bytes_received_ok_packetОбщий размер пакетов OK в байтах, которые драйвер получил по протоколу MySQL Client Server. Пакеты OK иногда содержат сообщение о статусе. Длина сообщения о статусе варьируется, поэтому размер пакета OK не фиксирован.
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_okКоличество полученных пакетов OK протокола MySQL Client Server.
bytes_received_eof_packetОбщий размер пакетов EOF в байтах, которые драйвер получил по протоколу MySQL Client Server. Размер пакетов EOF варьируется и зависит от версии сервера. При ошибке в EOF-пакете также передаётся сообщение об ошибке.
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_eofКоличество пакетов EOF протокола MySQL Client Server.
Как и в случае с другой статистикой пакетов, количество пакетов будет увеличиваться, даже если PHP получит не ожидаемый пакет, а, например, сообщение об ошибке.
bytes_received_rset_header_packet
Общий размер результирующего набора пакетов заголовков протокола
MySQL Client Server в байтах.
Размер пакетов варьируется в зависимости от полезной нагрузки
(инструкции LOAD LOCAL INFILE, INSERT,
UPDATE, SELECT, сообщение об ошибке).
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_rset_headerКоличество пакетов заголовков результирующего набора протокола MySQL Client Server.
bytes_received_rset_field_meta_packetОбщий размер пакетов метаданных (информации о столбце) результирующего набора протокола MySQL Client Server в байтах. Конечно, размер зависит от столбцов в наборе результатов. При выполнении команды COM_LIST_FIELDS вместо пакета с метаданными передаётся пакет с ошибкой или EOF-пакет.
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_rset_field_metaКоличество пакетов метаданных (информации о столбце) результирующего набора протокола MySQL Client Server.
bytes_received_rset_row_packet
Общий размер пакетов данных строки результирующего набора протокола MySQL Client Server
в байтах.
Пакет также может передавать ошибку или пакет EOF.
Количество ошибок и пакетов EOF вычисляют путём вычитания
метрик rows_fetched_from_server_normal
и rows_fetched_from_server_ps
из метрики bytes_received_rset_row_packet.
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_rset_rowКоличество пакетов данных строки результирующего набора протокола MySQL Client Server.
bytes_received_prepare_response_packetОбщий размер пакетов OK протокола MySQL Client Server для инициализации подготовленного запроса (init-пакеты подготовленного запроса) в байтах. Пакет также может передавать сообщение об ошибке. Размер пакета зависит от версии MySQL-сервера.
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_prepare_responseКоличество пакетов OK протокола MySQL Client Server для инициализации подготовленного запроса (init-пакеты подготовленного запроса).
bytes_received_change_user_packetОбщий размер пакетов COM_CHANGE_USER протокола MySQL Client Server protocol в байтах. Пакет также может передавать ошибку или состояние EOF.
Замечание:
Общий размер в байтах включает размер пакета заголовка — 4 байта, см. накладные расходы протокола.
packets_received_change_userКоличество пакетов COM_CHANGE_USER протокола MySQL Client Server.
packets_sent_commandКоличество команд протокола MySQL Client Server, которые отправил PHP на MySQL-сервер.
Нет способа узнать, какие именно команды и сколько из них отправил PHP.
bytes_received_real_data_normal
Количество байтов полезной нагрузки, которые получил PHP-клиент
от драйвера mysqlnd по текстовому протоколу.
Это размер фактических данных, которые содержатся в наборах результатов, которые не исходят из подготовленных запросов и которые получил PHP-клиент.
Обратите внимание, даже при извлечении драйвером mysqlnd полного набора результатов
с MySQL-сервера в статистике учитываются только фактические данные,
которые PHP-клиент получил от дайвера mysqlnd.
Пример последовательности кода, которая увеличивает значение, выглядит следующим образом:
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->fetch_assoc();
$res->close();
Однако значение метрики не увеличится, если результирующий набор только буферизуется на клиенте, но не извлекается, как, например, в следующем примере:
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->close();
bytes_received_real_data_ps
Количество байтов полезной нагрузки, которую получил PHP-клиент
от драйвера mysqlnd по протоколу подготовленного запроса.
Это размер фактических данных, которые содержатся в наборах результатов, которые не исходят из подготовленных запросов и которые получил PHP-клиент.
Модуль не увеличит значение, если PHP-клиент впоследствии не прочитает набор результатов.
Обратите внимание, что, хотя полный результирующий набор мог быть получен от MySQL-сервера
через драйвер mysqlnd, в этой статистике учитываются только фактические данные,
которые PHP-клиент получил от драйвера mysqlnd.
Смотрите также описание метрики bytes_received_real_data_normal.
result_set_queries
Количество запросов, которые сгенерировали набор результатов.
Примеры запросов, которые генерируют результирующий набор:
SELECT, SHOW.
Модуль не увеличивает значение метрики, если произойдет ошибка при чтении пакета заголовка результирующего набора из строки.
Замечание:
Этой статистикой пользуются как косвенным показателем количества запросов, которые PHP отправил на MySQL-сервер. Это помогает определить клиента, который вызывает высокую нагрузку на базу данных.
non_result_set_queries
Количество запросов, которые не создали набор результатов.
Примеры запросов, которые не генерируют набор результатов:
INSERT, UPDATE, LOAD DATA.
Модуль не увеличивает значение метрики, если произойдет ошибка при считывании пакета заголовка результирующего набора из строки.
Замечание:
Этой статистикой пользуются как косвенным показателем количества запросов, которые PHP отправил на MySQL-сервер. Это помогает определить клиента, который вызывает высокую нагрузку на базу данных.
no_index_used
Количество запросов, которые создали набор результатов, но не использовали индекс.
(Смотрите также параметр запуска --log-queries-not-using-indexes команды mysqld).
Замечание:
Об этих запросах сообщают через исключение, для чего вызывают
mysqli_report(MYSQLI_REPORT_INDEX);. Вместо этого можно сообщить о них через предупреждения путём вызоваmysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);.
bad_index_used
Количество запросов, которые сгенерировали набор результатов без хорошего индекса.
(Смотрите также параметр запуска --log-slow-queries команды mysqld).
Замечание:
Об этих запросах сообщают через исключение, для чего вызывают
mysqli_report(MYSQLI_REPORT_INDEX);. Вместо этого можно сообщить о них через предупреждения путём вызоваmysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);.
slow_queries
SQL-запросы, выполнение которых заняло больше секунд, чем значение параметра long_query_time,
и для проверки которых требовало как минимум такое количество строк,
которое задали в параметре min_examined_row_limit.
Не сообщается через функцию mysqli_report().
buffered_setsКоличество буферизованных результирующих наборов, которые возвращают обычные неподготовленные запросы.
Примеры вызовов API, которые буферизуют наборы результатов на клиенте: mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result()
unbuffered_setsКоличество небуферизованных результирующих наборов, которые возвращают обычные неподготовленные запросы.
Примеры вызовов API, которые не буферизуют наборы результатов на клиенте: mysqli_use_result()
ps_buffered_setsКоличество буферизованных наборов результатов, которые возвращают подготовленные запросы.
Примеры вызовов API, которые буферизуют наборы результатов на клиенте: mysqli_stmt_store_result()
ps_unbuffered_setsКоличество небуферизованных наборов результатов, которые возвращают подготовленные запросы.
По умолчанию подготовленные запросы не буферизуются, поэтому эта метрика учтёт большинство подготовленных запросов.
flushed_normal_setsКоличество результирующих наборов, которые возвращают обычные неподготовленные запросы с непрочитанными данными, которые были без предупреждения сброшены.
Замечание:
Модуль сбрасывает только небуферизованные наборы результатов.
Небуферизованные результирующие наборы должны быть полностью получены перед выполнением нового запроса по соединению, иначе MySQL-сервер выдаст ошибку. Если приложение не извлекает все строки из небуферизованного результирующего набора, команда mysqlnd неявно извлекает результирующий набор, чтобы очистить строку.
Смотрите также описание метрик
rows_skipped_normal,rows_skipped_ps.Некоторые причины неявного сброса:
Ошибка клиентского приложения
Клиент прекратил чтение данных, когда нашёл то, что искал, но заставил MySQL-сервер вычислять больше записей, чем требуется
Клиентское приложение неожиданно остановилось
flushed_ps_setsКоличество результирующих наборов с непрочитанными данными, которые вернули подготовленные запросы и которые были без предупреждения сброшены.
Замечание:
Модуль сбрасывает только небуферизованные наборы результатов.
Небуферизованные результирующие наборы должны быть полностью получены перед выполнением нового запроса по соединению, иначе MySQL-сервер выдаст ошибку. Если приложение не извлекает все строки из небуферизованного результирующего набора, команда mysqlnd неявно извлекает результирующий набор, чтобы очистить строку.
Смотрите также описание метрик
rows_skipped_normal,rows_skipped_ps.Некоторые причины неявного сброса:
Ошибка клиентского приложения
Клиент прекратил чтение данных, когда нашёл то, что искал, но заставил MySQL-сервер вычислять больше записей, чем требуется
Клиентское приложение неожиданно остановилось
ps_prepared_never_executedКоличество запросов, которые подготовили, но не выполнили.
ps_prepared_once_executedКоличество подготовленных запросов, которые выполнили только один раз.
rows_fetched_from_server_normalrows_fetched_from_server_psОбщее количество строк результирующего набора, которые вернул сервер. Сюда входят строки, которые клиент не прочитал, но неявно получил из-за сброшенных небуферизованных результирующих наборов.
Смотрите также описание метрики packets_received_rset_row.
rows_buffered_from_client_normalОбщее количество буферизованных строк, которые получили в результате обычного запроса.
Это количество строк, которые вернул MySQL-сервер и буферизовал клиент.
Примеры запросов, которые буферизуют результаты:
rows_buffered_from_client_ps
То же, что и метрика rows_buffered_from_client_normal,
но для подготовленных запросов.
rows_fetched_from_client_normal_bufferedОбщее количество строк, которые извлёк клиент из буферизованного результирующего набора, который создал обычный запрос.
rows_fetched_from_client_ps_bufferedОбщее количество строк, которые извлёк клиент из буферизованного результирующего набора, который создал подготовленный запрос.
rows_fetched_from_client_normal_unbufferedОбщее количество строк, которые извлёк клиент из небуферизованного результирующего набора, который создал обычный запрос.
rows_fetched_from_client_ps_unbufferedОбщее количество строк, которые извлёк клиент из небуферизованного результирующего набора, который создал подготовленный запрос.
rows_fetched_from_client_ps_cursorОбщее количество строк, которые клиент извлёк из курсора, который создал подготовленный запрос.
rows_skipped_normalrows_skipped_psМетрику зарезервировали для будущих нужд (пока не поддерживается).
copy_on_write_savedcopy_on_write_performedЭто статистика уровня процесса.
При запуске команды mysqlnd переменные, которые возвращает модуль, указывают на внутренние сетевые буферы результатов команды mysqlnd. Если данные не изменяются, извлеченные данные сохраняются в памяти только один раз. Однако для внесения изменений в данные потребуется, чтобы команда mysqlnd выполнила операцию копирования при записи.
explicit_free_resultimplicit_free_resultЭто статистика уровня соединения и процесса.
Общее количество высвобожденных результирующих наборов.
proto_text_fetched_null
Общее количество столбцов типа
MYSQL_TYPE_NULL,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_null
Общее количество столбцов типа
MYSQL_TYPE_NULL,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_bit
Общее количество столбцов типа
MYSQL_TYPE_BIT,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_bit
Общее количество столбцов типа
MYSQL_TYPE_BIT,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_tinyint
Общее количество столбцов типа
MYSQL_TYPE_TINY,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_tinyint
Общее количество столбцов типа
MYSQL_TYPE_TINY,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_short
Общее количество столбцов типа
MYSQL_TYPE_SHORT,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_short
Общее количество столбцов типа
MYSQL_TYPE_SHORT,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_int24
Общее количество столбцов типа
MYSQL_TYPE_INT24,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_int24
Общее количество столбцов типа
MYSQL_TYPE_INT24,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_int
Общее количество столбцов типа
MYSQL_TYPE_LONG,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_int
Общее количество столбцов типа
MYSQL_TYPE_LONG,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_bigint
Общее количество столбцов типа
MYSQL_TYPE_LONGLONG,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_bigint
Общее количество столбцов типа
MYSQL_TYPE_LONGLONG,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_decimal
Общее количество столбцов типа
MYSQL_TYPE_DECIMAL или MYSQL_TYPE_NEWDECIMAL,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_decimal
Общее количество столбцов типа
MYSQL_TYPE_DECIMAL или MYSQL_TYPE_NEWDECIMAL,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_float
Общее количество столбцов типа
MYSQL_TYPE_FLOAT,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_float
Общее количество столбцов типа
MYSQL_TYPE_FLOAT,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_double
Общее количество столбцов типа
MYSQL_TYPE_DOUBLE,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_double
Общее количество столбцов типа
MYSQL_TYPE_DOUBLE,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_date
Общее количество столбцов типа
MYSQL_TYPE_DATE или MYSQL_TYPE_NEWDATE,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_date
Общее количество столбцов типа
MYSQL_TYPE_DATE или MYSQL_TYPE_NEWDATE,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_year
Общее количество столбцов типа
MYSQL_TYPE_YEAR,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_year
Общее количество столбцов типа
MYSQL_TYPE_YEAR,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_time
Общее количество столбцов типа
MYSQL_TYPE_TIME,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_time
Общее количество столбцов типа
MYSQL_TYPE_TIME,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_datetime
Общее количество столбцов типа
MYSQL_TYPE_DATETIME,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_datetime
Общее количество столбцов типа
MYSQL_TYPE_DATETIME,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_timestamp
Общее количество столбцов типа
MYSQL_TYPE_TIMESTAMP,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_timestamp
Общее количество столбцов типа
MYSQL_TYPE_TIMESTAMP,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_string
Общее количество столбцов типа
MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING или MYSQL_TYPE_VARCHAR,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_string
Общее количество столбцов типа
MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING или MYSQL_TYPE_VARCHAR,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_blob
Общее количество столбцов типа
MYSQL_TYPE_TINY_BLOB,
MYSQL_TYPE_MEDIUM_BLOB,
MYSQL_TYPE_LONG_BLOB
или MYSQL_TYPE_BLOB,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_blob
Общее количество столбцов типа
MYSQL_TYPE_TINY_BLOB,
MYSQL_TYPE_MEDIUM_BLOB,
MYSQL_TYPE_LONG_BLOB
или MYSQL_TYPE_BLOB,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_enum
Общее количество столбцов типа
MYSQL_TYPE_ENUM,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_enum
Общее количество столбцов типа
MYSQL_TYPE_ENUM,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_set
Общее количество столбцов типа
MYSQL_TYPE_SET,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_set
Общее количество столбцов типа
MYSQL_TYPE_SET,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_geometry
Общее количество столбцов типа
MYSQL_TYPE_GEOMETRY,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
proto_binary_fetched_geometry
Общее количество столбцов типа
MYSQL_TYPE_GEOMETRY,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
proto_text_fetched_other
Общее количество столбцов типов
MYSQL_TYPE_*,
не перечисленных ранее,
которые модуль извлёк из обычного запроса (текстовый протокол MySQL-сервера).
Замечание:
Теоретически значение всегда должно равняться
0.
proto_binary_fetched_other
Общее количество столбцов типа
MYSQL_TYPE_*,
не включённых ранее,
которые модуль получил из подготовленного запроса (двоичный протокол MySQL-сервера).
Замечание:
Теоретически, значение всегда должно равняться
0.
connect_successОбщее количество успешных попыток подключения.
Замечание:
connect_successсодержит сумму успешных постоянных и непостоянных попыток подключения. Следовательно, количество успешных попыток непостоянного подключения равно разностиconnect_success - pconnect_success.
pconnect_successОбщее количество успешных попыток постоянного подключения.
connect_failureОбщее количество неудачных попыток подключения.
reconnectЭто статистика уровня процесса.
active_connectionsЭто статистика уровня процесса.
Общее количество активных постоянных и непостоянных подключений.
Замечание:
Общее количество активных непостоянных соединений равно разности
active_connections - active_persistent_connections.
active_persistent_connectionsЭто статистика уровня процесса.
Общее количество активных постоянных соединений.
explicit_closeОбщее количество явно закрытых соединений.
Пример #1 Примеры фрагментов кода, которые вызывают явное закрытие
$link = new mysqli(/* ... */); $link->close(/* ... */);
$link = new mysqli(/* ... */); $link->connect(/* ... */);
implicit_closeОбщее количество неявно закрытых соединений.
Пример #2 Примеры фрагментов кода, которые вызывают неявное закрытие
$link = new mysqli(/* ... */); $link->real_connect(/* ... */);
unset($link)
Постоянное соединение: объединенное соединение создали методом real_connect, и, возможно, установили неизвестный набор опций, — закрывается неявно, чтобы избежать возврата соединения с неизвестными параметрами
Persistent connection: ping/change_user завершается неудачно, а ext/mysqli закрывает соединение
Окончание работы скрипта: закрываются соединения, которые пользователь не закрыл явно
disconnect_close
Сбои подключения, на которые указывает вызов метода API-интерфейса языка C
mysql_real_connect при попытке
установить соединение.
in_middle_of_command_closeЭто статистика уровня процесса.
Соединение прервалось в середине выполнения команды (не были получены выдающиеся результирующие наборы после отправки запроса и до получения ответа, во время получения данных, во время передачи данных через LOAD DATA).
Если не выполняются асинхронные запросы, это должно произойти, только если PHP-приложение неожиданно завершилось, и PHP автоматически закрывает соединение.
init_command_executed_count
Общее количество выполнений команды инициализации.
Например: mysqli_options(MYSQLI_INIT_COMMAND , $value).
Количество успешных запусков — разность
init_command_executed_count - init_command_failed_count.
init_command_failed_countОбщее количество неудачных команд инициализации.
Статистика команд COM_*
com_quitcom_init_dbcom_querycom_field_listcom_create_dbcom_drop_dbcom_refreshcom_shutdowncom_statisticscom_process_infocom_connectcom_process_killcom_debugcom_pingcom_timecom_delayed_insertcom_change_usercom_binlog_dumpcom_table_dumpcom_connect_outcom_register_slavecom_stmt_preparecom_stmt_executecom_stmt_send_long_datacom_stmt_closecom_stmt_resetcom_stmt_set_optioncom_stmt_fetchcom_daemon
Общее количество попыток PHP отправить конкретную команду COM_*
на MySQL-сервер.
Значение метрики увеличивается после проверки строки и сразу перед отправкой соответствующего пакета клиент-серверного протокола MySQL.
Если драйвер MySQLnd не сможет отправить пакет по сети, значение метрики не будет уменьшаться.
При сбое драйвер MySQLnd выдаёт PHP-предупреждение
Error while sending %s packet. PID=%d.
Пример #3 Примеры использования
Проверьте, отправляет ли PHP конкретные команды на MySQL-сервер, например:
проверьте, отправляет ли клиент команду COM_PROCESS_KILL
Вычислите среднее количество выполнений подготовленных операторов
путём сравнения команду COM_EXECUTE
с командой COM_PREPARE
Выясните, не запускал ли PHP неподготовленные SQL-запросы
путём проверки, равно ли значение команды COM_QUERY нулю
Определите PHP-скрипты, которые запускают чрезмерное количество SQL-запросов
путём проверки команд COM_QUERY
и COM_EXECUTE
explicit_stmt_closeimplicit_stmt_closeЭто статистика уровня процесса.
Общее количество закрытых подготовленных заявлений.
Замечание:
Подготовленный запрос всегда явно закрыт. Единственный раз, когда он закрывается неявно, — когда подготовка не удалась.
mem_emalloc_countmem_emalloc_ammountmem_ecalloc_countmem_ecalloc_ammountmem_realloc_countmem_realloc_ammountmem_efree_countmem_malloc_countmem_malloc_ammountmem_calloc_countmem_calloc_ammountmem_ealloc_countmem_ealloc_ammountmem_free_countЭто статистика уровня процесса.
Вызовы управления памятью.
command_buffer_too_smallКоличество модулей сетевого буфера команд при отправке команд из PHP на сервер MySQL.
Драйвер mysqlnd выделяет для каждого подключения внутренний командный или сетевой буфер, размер которого задали в байтах в опции конфигурации mysqlnd.net_cmd_buffer_size.
Драйвер MySQLnd увеличит размер буфера до размера,
который требуется для отправки команды,
если команда протокола MySQL Client Server наподобие COM_QUERY
(обычный запрос) не помещается в буфер.
Каждый раз при расширении буфера для одного соединения
метрика command_buffer_too_small увеличивается на единицу.
Если драйверу MySQLnd приходится увеличивать размер буфера сверх первоначального размера, который задали в байтах в опции mysqlnd.net_cmd_buffer_size, почти для каждого соединения, размер по умолчанию для буфера увеличивают, чтобы избежать перераспределения памяти.
connection_reusedОбщее количество переиспользований постоянного соединения.