PHP 8.3.7 Released!

Статистика

MySQL Native Driver поддерживает сбор статистики по взаимодействию клиента с сервером. Статистические данные собираются с двух основных точек:

  • Клиентская статистика
  • Статистика соединения

При работе с модулем mysqli эти статистические данные получают через два API-вызова:

Замечание: Статистика агрегируется по всем расширениям, которые используют драйвер MySQL Native Driver. Например, если модуль mysqli и драйвер PDO MySQL настроены на работу с драйвером MySQLnd, тогда вызовы функций модуля mysqli и вызовы методов класса PDO будут влиять на статистику. Нет способа узнать, насколько конкретный вызов API модуля, который скомпилировали с драйвером MySQL Native Driver, повлиял на конкретную статистику.

Получение статистики

Клиентскую статистику получают через вызов функции mysqli_get_client_stats().

Статистику соединения получают через вызов функции mysqli_get_connection_stats().

Обе функции возвращают ассоциативный массив, в котором метрики статистики — ключи, которые соответствуют статистическим данным.

Статистика драйвера MySQL Native Driver

Бо́льшая часть статистических данных связана с подключением, но отдельные данные связаны с процессом, и тогда это упоминается.

Следующая статистика выдается драйвером 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 в байтах. Конечно, размер зависит от столбцов в наборе результатов. Пакет также может передавать ошибку или пакет EOF в случае пакета COM_LIST_FIELDS.

Замечание: Общий размер в байтах включает размер пакета заголовка (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-клиент. Обратите внимание, что, хотя полный результирующий набор мог быть получен от MySQL-сервера через драйвер mysqlnd, в этой статистике учитываются только фактические данные, которые 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_normal
rows_fetched_from_server_ps
Общее количество строк результирующего набора, которые вернул сервер. Сюда входят строки, которые клиент не прочитал, но неявно получил из-за сброшенных небуферизованных результирующих наборов. Смотрите также описание метрики packets_received_rset_row.
rows_buffered_from_client_normal
Общее количество буферизованных строк, которые получили в результате обычного запроса. Это количество строк, которые вернул MySQL-сервер и буферизовал клиент.

Примеры запросов, которые буферизуют результаты:

rows_buffered_from_server_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_normal
rows_skipped_ps
Метрику зарезервировали для будущих нужд (пока не поддерживается).
copy_on_write_saved
copy_on_write_performed
Это статистика уровня процесса. При запуске команды mysqlnd переменные, которые возвращает модуль, указывают на внутренние сетевые буферы результатов команды mysqlnd. Если данные не изменяются, извлеченные данные сохраняются в памяти только один раз. Однако для внесения изменений в данные потребуется, чтобы команда mysqlnd выполнила операцию копирования при записи.
explicit_free_result
implicit_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_quit
com_init_db
com_query
com_field_list
com_create_db
com_drop_db
com_refresh
com_shutdown
com_statistics
com_process_info
com_connect
com_process_kill
com_debug
com_ping
com_time
com_delayed_insert
com_change_user
com_binlog_dump
com_table_dump
com_connect_out
com_register_slave
com_stmt_prepare
com_stmt_execute
com_stmt_send_long_data
com_stmt_close
com_stmt_reset
com_stmt_set_option
com_stmt_fetch
com_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_close
implicit_stmt_close
Это статистика уровня процесса. Общее количество закрытых подготовленных заявлений.

Замечание: Подготовленный запрос всегда явно закрыт. Единственный раз, когда он закрывается неявно, — когда подготовка не удалась.

mem_emalloc_count
mem_emalloc_ammount
mem_ecalloc_count
mem_ecalloc_ammount
mem_realloc_count
mem_realloc_ammount
mem_efree_count
mem_malloc_count
mem_malloc_ammount
mem_calloc_count
mem_calloc_ammount
mem_ealloc_count
mem_ealloc_ammount
mem_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
Общее количество переиспользований постоянного соединения.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top