Использование статистических данных
MySQL Native Driver поддерживает сбор статистики по взаимодействию клиента с сервером. Статистика собирается с двух основных точек:
Клиентская статистика
Статистика соединения
Если вы используете модуль mysqli
, эта статистика
доступна с помощью двух функций, обращающихся к API:
Замечание:
Статистика агрегируется со всех модулей, использующих MySQL Native Driver. К примеру, если подключить и
ext/mysql
иext/mysqli
через MySQL Native Driver, как вызовы функцийext/mysql
так иext/mysqli
будут внесены в общую статистику. Возможность разделить статистику в зависимости от использованного модуля отсутствует. Вы можете сконфигурировать драйвера PDO MySQL,ext/mysql
иext/mysqli
для опционального использования MySQL Native Driver. При этом все три модуля будут изменять статистику.
Доступ к клиентской статистике
Для получения клиентской статистике необходимо выполнить функцию mysqli_get_client_stats(). Функция вызывается без параметров.
Функция возвращает ассоциативный массив, использующий в качестве ключей названия метрик статистики и в качестве значения этих метрик, собственно, значения.
Также клиентская статистика доступна с помощью функции phpinfo().
Доступ к статистике соединения
Для получения статистики соединения, выполните функцию mysqli_get_connection_stats(), передав в качестве параметра ресурс соединения.
Функция возвращает ассоциативный массив, использующий в качестве ключей названия метрик статистики и в качестве значения этих метрик, собственно, значения.
Буферизованные и небуферизованные результирующие наборы
Результирующие наборы могут быть буферизованными и небуферизованными.
При использовании настроек по умолчанию, ext/mysql
и
ext/mysqli
работают с буферизованными результирующими
наборами при использовании нормальных (не подготовленных) запросов.
Буферизованные результирующие наборы кешируются на стороне клиента.
После выполнения запроса, все результаты передаются на клиента, где
сохраняются в кеше. Преимущество буферизованных запросов в том, что
сразу высвобождаются серверные ресурсы, связанные с хранением результирующего
набора.
Небуферизованные результирующие наборы, с другой стороны,
сохраняются на сервере гораздо дольше. Если вы хотите сократить потребление
памяти на клиенте, но при этом нагрузить сервер, используйте небуферизованные
результирующие наборы. Если узким местом в вашей системе является сервер
баз данных, то вам стоит задуматься о скорейшем перемещении результатов
на клиента. Обычно клиенты масштабируются гораздо легче, чем сервера БД.
Нагрузка
ложится не только на память, но и
на прочие ресурсы, которые должна поддерживать база данных для обслуживания
соединения, такие как открытые файловые дескрипторы и нити исполнения.
Подготовленные запросы по умолчанию используют небуферизованные результирующие наборы. В любом случае, вы можете использовать функцию mysqli_stmt_store_result() для буферизации результатов.
Статистика возвращаемая MySQL Native Driver
Следующая таблица демонстрирует список возвращаемой функциями mysqli_get_client_stats() и mysqli_get_connection_stats() статистики.
Метрика | Область применения | Описание | Замечания |
---|---|---|---|
bytes_sent |
Соединение | Количество байт переданных от PHP на сервер MySQL | Может использоваться для проверки эффективности протокола сжатия |
bytes_received |
Соединение | Количество байт полученных от сервера MySQL | Может использоваться для проверки эффективности протокола сжатия |
packets_sent |
Соединение | Количество пакетов посланных от клиента серверу MySQL | Используется для отладки реализации клиент-серверного протокола |
packets_received |
Соединение | Количество пакетов принятых клиентом от сервера MySQL | Используется для отладки реализации клиент-серверного протокола |
protocol_overhead_in |
Соединение | накладные расходы клиент-серверного протокола MySQL в байтах для входящего трафика. на данный момент только заголовок пакета (4 байта) считается за накладные расходы. protocol_overhead_in = packets_received * 4 | Используется для отладки реализации клиент-серверного протокола |
protocol_overhead_out |
Соединение | MySQL Client Server protocol overhead in bytes for outgoing traffic. Currently only the Packet Header (4 bytes) is considered as overhead. protocol_overhead_out = packets_sent * 4 | Используется для отладки реализации клиент-серверного протокола |
bytes_received_ok_packet |
Соединение | Общее количество байт принятых ОК-пакетов клиент-серверного протокола MySQL. OK-пакеты могут содержать статусные сообщения. Длина статусных сообщений может меняться, следовательно размер ОК-пакетов не фиксирована. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_ok |
Соединение | Количество принятых OK-пакетов | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
bytes_received_eof_packet |
Соединение | Общее количество байт принятых EOF-пакетов. Размер EOF-пакета может изменяться в зависимости от версии сервера. Также, EOF-пакеты могут использоваться как транспорт для сообщений об ошибках. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_eof |
Соединение | Количество принятых EOF-пакетов. Как и для прочей статистики по пакетам, это число может увеличиваться каждый раз, когда PHP не получает ожидаемый пакет, а, к примеру, получает сообщение об ошибке. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
bytes_received_rset_header_packet |
Соединение | Общее количество байт принятых заголовочных пакетов результирующих наборов.
Размер пакетов зависит от полезной нагрузки (LOAD LOCAL INFILE ,
INSERT , UPDATE , SELECT , сообщение об ошибке).
|
Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_rset_header |
Соединение | Количество пакетов заголовков результирующих наборов. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
bytes_received_rset_field_meta_packet |
Соединение | Общий размер в байтах полученных пакетов с метаданными результирующих наборов (информации о столбцах). Естественно размер каждого пакета индивидуален. Эти пакеты могут выступать транспортом для ошибок и EOF-пакетов в случае COM_LIST_FIELDS. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_rset_field_meta |
Соединение | Общее количество полученных пакетов с метаданными результирующих наборов (информации о столбцах). | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
bytes_received_rset_row_packet |
Соединение | Общий размер в байтах полученных пакетов с данными результирующего набора.
Эти пакеты могут служить транспортом для ошибок и в качестве EOF-пакетов.
Вы можете вычислить количество ошибок и EOF-пакетов отняв
rows_fetched_from_server_normal и
rows_fetched_from_server_ps от
bytes_received_rset_row_packet . |
Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_rset_row |
Соединение | Количество пакетов с данными результирующих наборов и их суммарный объем в байтах. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
bytes_received_prepare_response_packet |
Соединение | Общий размер в байтах ОК-пакетов инициализации подготовленных запросов.
(инициализирующие пакеты подготовленных запросов). Эти пакеты могут выступать транспортом
для ошибок. Размер пакета зависит от версии Mysql: 9 байт для MySQL4.1 и 12 байт начиная с 5.0.
Нет надёжного способа узнать количество ошибок. Вы можете определить, что случилась
ошибка, если, например, вы работаете с MySQL 5.0 или новее, а
bytes_received_prepare_response_packet !=
packets_received_prepare_response * 12. Также смотрите
ps_prepared_never_executed , ps_prepared_once_executed .
|
Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_prepare_response |
Соединение | Количество полученных ОК-пакетов для инициализации подготовленных запросов. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
bytes_received_change_user_packet |
Соединение | Общий размер в байтах полученных пакетов COM_CHANGE_USER. Пакеты могут служить транспортом для ошибок и EOF-пакетов. | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_received_change_user |
Соединение | Количество принятых пакетов COM_CHANGE_USER | Используется для отладки реализации клиент-серверного протокола. Обратите внимание, что общий размер включает в себя заголовочный пакет, размером 4 байта. |
packets_sent_command |
Соединение | Количество команд посланных от PHP серверу MySQL. Возможность узнать, какие конкретно и в каких количествах посылались команды отсутствует. Лучшее, для чего вы можете использовать эту метрику, это проверять, что посылает команды серверу MySQL и поддержка MySQL в PHP не запрещена. Также отсутствует возможность определить количество ошибок, возникших при отправке этих команд. Единственная опознаваемая ошибка - это command_buffer_too_small (смотрите ниже). | Используется для отладки реализации клиент-серверного протокола |
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 не будет запрашивать эти данные.
Обратите внимание, что хоть возможно mysqlnd забрал и полный
результирующий набор с сервера MySQL, но в этой метрике учитываются только данные
уже полученные клиентом PHP от mysqlnd .
Также смотрите bytes_received_real_data_normal .
|
Результирующий набор
Метрика | Область применения | Описание | Замечания |
---|---|---|---|
result_set_queries |
Соединение | Количество запросов, по которым был создан результирующий набор.
Пример запросов, создающих результирующий набор: SELECT , SHOW .
Статистика не будет увеличиваться в случае возникновения ошибки чтения заголовочного
пакета результирующего набора. |
Вы можете использовать эту метрику, как опосредованный счётчик выполненных запросов, например для обнаружения клиента, создающего большую нагрузку на БД. |
non_result_set_queries |
Соединение | Количество запросов, по которым не был создан результирующий набор.
Пример запросов, не создающих результирующий набор:
INSERT , UPDATE ,
LOAD DATA .
Статистика не будет увеличиваться в случае возникновения ошибки чтения заголовочного
пакета результирующего набора. |
Вы можете использовать эту метрику, как опосредованный счётчик выполненных запросов, например для обнаружения клиента, создающего большую нагрузку на БД. |
no_index_used |
Соединение | Количество запросов, создающих результирующий набор, но не использовавших индексы (также смотрите опцию запуска mysqld –log-queries-not-using-indexes). Если вы хотите получать отчёты о подобных запросах, вы можете использовать mysqli_report(MYSQLI_REPORT_INDEX) для того, чтобы ext/mysqli выбрасывал исключение. Если вы предпочитаете просто предупреждение, используйте mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT). | |
bad_index_used |
Соединение | Количество запросов, создающих результирующий набор, но не использовавших хорошие индексы (также смотрите опцию запуска mysqld –log-slow-queries). | Если вы хотите получать отчёты о подобных запросах, вы можете использовать mysqli_report(MYSQLI_REPORT_INDEX)для того, чтобы ext/mysqli выбрасывал исключение. Если вы предпочитаете просто предупреждение, используйте mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT) |
slow_queries |
Соединение | SQL-запросы, выполнявшиеся дольше чем long_query_time
секунд и потребовавшие перебора более чем min_examined_row_limit
строк. |
Не извлекается с помощью mysqli_report() |
buffered_sets |
Соединение | Количество буферизированных результирующих наборов возвращённых
нормальнымизапросами. Нормальные, здесь и дальше значит не подготовленные. |
Примеры вызовов API, буферизующих результирующий набор на клиенте: mysql_query(), mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result(). Буферизация результирующего набора на клиенте гарантирует, что серверные ресурсы будут освобождены так быстро, как возможно и делает позиционирование более простым. Плохая новость в том, что это будет стоит дополнительного расхода памяти на клиенте. Обратите внимание, что mysqlnd (в отличие от клиентской библиотеки MySQL) зависит от ограничений PHP на память, поскольку использует внутренний менеджер памяти PHP. Это является одной из причин, почему memory_get_usage() при использовании mysqlnd показывает большие значение, чем при использовании клиентской библиотеки MySQL. memory_get_usage() не замеряет потребление памяти клиентской библиотекой MySQL, поскольку он не использует внутренний менеджер памяти PHP. |
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 . Возможные причины, ведущие к принудительному обнулению:
|
flushed_ps_sets |
Соединение | Количество результирующих наборов возвращённых подготовленными запросами с непрочитанными данными, которые были обнулены прозрачно для вас. Подобное происходит только с небуферизированными результирующими наборами. | Небуферизированные результирующие наборы должны быть полностью извлечены,
прежде чем будет возможно запустить новый запрос в том же соединении с MySQL, в противном
случае произойдёт ошибка. Если приложение не извлекло все строки небуферизированного
результирующего набора, mysqlnd принудительно извлечёт его, чтобы освободить ресурсы
сервера. Также смотрите rows_skipped_normal и
rows_skipped_ps . Возможные причины, ведущие к принудительному обнулению:
|
ps_prepared_never_executed |
Соединение | Количество подготовленных, но не запущенных запросов. | Подготовленные запросы потребляют серверные ресурсы. Вы не должны подготавливать запросы, если не будете их запускать. |
ps_prepared_once_executed |
Соединение | Количество подготовленных запросов, запущенных только один раз. | Главная идея подготовленных запросов в том, что один и тот же запрос
будет запускаться несколько раз, но, возможно, с другими параметрами. Это
позволяет сэкономить на подготовке запросов, позволяя произвести разбор
запроса только один раз, а потом просто подставлять в него параметры и запускать.
При подготовке запроса происходит кешированиерезультата, например можно многократно использовать дерево разбора, созданное один раз на этапе подготовки. Если же вы запускаете подготовленный запрос всего один раз, то никакого выигрыша по сравнению с нормальнымизапросами не будет, даже наоборот, будут дополнительные накладные расходы на кеширование подготовленного запроса. Таким образом, подготовленные запросы, которые используются всего один раз, ведут к ухудшению производительности. |
rows_fetched_from_server_normal ,
rows_fetched_from_server_ps |
Соединение | Общее количество успешно извлечённых строк из базы MySQL, независимо от того, использованы они были приложением или нет. Часть строк могут не извлекаться приложением, но при этом принудительно обнуляться. | Также смотрите packets_received_rset_row |
rows_buffered_from_client_normal ,
rows_buffered_from_client_ps |
Соединение | Общее количество успешно буферизованных строк, полученных при выполнении "нормальных" запросов. Это количество строк, извлечённых из MySQL и буферизованных на клиенте. Обратите внимание, что существует две независимые метрики для буферизованных строк и (переданных от MySQL в буфер mysqlnd) и строк, прочтённых приложением (переданных из буфера mysqlnd клиентскому приложению). Если количество буферизованных строк больше чем число извлечённых клиентом, то стоит обратить внимание на клиентские запросы, так как они извлекают больше данных, чем им на самом деле нужно. | Пример запросов, буферизующих результирующие наборы: mysqli_query(), mysqli_store_result() |
rows_fetched_from_client_normal_buffered ,
rows_fetched_from_client_ps_buffered |
Соединение | Общее количество извлечённых клиентов строк из буферизованных результирующих наборов для любого типа запросов. | |
rows_fetched_from_client_normal_unbuffered ,
rows_fetched_from_client_ps_unbuffered |
Соединение | Total number of rows fetched by the client from a unbuffered result set created by a "normal" query or a prepared statement. | |
rows_fetched_from_client_ps_cursor |
Соединение | Общее количество извлечённых клиентов строк из небуферизованных результирующих наборов для любого типа запросов. | |
rows_skipped_normal ,
rows_skipped_ps |
Соединение | Зарезервировано для использования в будущем и в данный момент не поддерживается | |
copy_on_write_saved ,
copy_on_write_performed |
Процесс | Если используется mysqlnd: переменные, возвращённые модулем, указывают на внутренний сетевой буфер результатов mysqlnd. Если вы не меняли переменные, извлечённые данные будут сохранены в памяти один раз. Если вы меняли переменные, mysqlnd выполнит копирование при записи для защиты внутренних сетевых буферов результата от изменения. Если используется клиентская библиотека MySQL: вы всегда держите извлечённые данные в памяти в двух экземплярах. Один раз во внутренних буферах клиентской библиотеки MySQL, и ещё один раз в переменных, возвращённых модулем. В теории, mysqlnd может до 40% сократить потребление памяти. В любом случае помните, что эту экономию не удастся замерить с помощью memory_get_usage(). | |
explicit_free_result ,
implicit_free_result |
Соединение, процесс (только на стадии очистки подготовленных запросов) | Общее количество высвобожденных результирующих наборов. | Очистка всегда производится явно, но для результирующих наборов, созданных
инициализирующими командами, например
mysqli_options(MYSQLI_INIT_COMMAND , ...) |
proto_text_fetched_null ,
proto_text_fetched_bit ,
proto_text_fetched_tinyint
proto_text_fetched_short ,
proto_text_fetched_int24 ,
proto_text_fetched_int
proto_text_fetched_bigint ,
proto_text_fetched_decimal ,
proto_text_fetched_float
proto_text_fetched_double ,
proto_text_fetched_date ,
proto_text_fetched_year
proto_text_fetched_time ,
proto_text_fetched_datetime ,
proto_text_fetched_timestamp
proto_text_fetched_string ,
proto_text_fetched_blob ,
proto_text_fetched_enum
proto_text_fetched_set ,
proto_text_fetched_geometry ,
proto_text_fetched_other |
Соединение | Общее количество столбцов определённого типа, извлечённых нормальными запросами (текстовый протокол MySQL). | Связка метаданных C API / MySQL с именами метрик статистики:
Обратите внимание, что константы типов MYSQL_* могут не ассоциироваться с одинаковыми столбцами SQL для разных версий MySQL. |
proto_binary_fetched_null ,
proto_binary_fetched_bit ,
proto_binary_fetched_tinyint
proto_binary_fetched_short ,
proto_binary_fetched_int24 ,
proto_binary_fetched_int ,
proto_binary_fetched_bigint ,
proto_binary_fetched_decimal ,
proto_binary_fetched_float ,
proto_binary_fetched_double ,
proto_binary_fetched_date ,
proto_binary_fetched_year ,
proto_binary_fetched_time ,
proto_binary_fetched_datetime ,
proto_binary_fetched_timestamp ,
proto_binary_fetched_string ,
proto_binary_fetched_blob ,
proto_binary_fetched_enum ,
proto_binary_fetched_set ,
proto_binary_fetched_geometry ,
proto_binary_fetched_other |
Соединение | Общее количество столбцов определённого типа, извлечённых подготовленными запросами (бинарный протокол MySQL). | Связь типов с proto_text_* смотрите в предыдущем пункте. |
Метрика | Область применения | Описание | Замечания |
---|---|---|---|
connect_success , connect_failure |
Соединение | Общее количество удачных/неудачных попыток соединения. | Переиспользованные и прочие типы соединений включаются. |
reconnect |
Процесс | Общее количество попыток выполнить real_connect на уже открытом соединении. | Следующий код $link = new mysqli(...);
$link->real_connect(...) приведёт к пересоединению. Но
$link = new mysqli(...); $link->connect(...)
не приведёт, так как $link->connect(...) принудительно
закроет существующее соединение перед созданием нового. |
pconnect_success |
Соединение | Общее количество успешных попыток открыть постоянное соединение | Обратите внимание, что connect_success содержит суммарное
количество обычных и постоянных соединений. Так что количество обычных
соединений можно вычислить так: connect_success -
pconnect_success . |
active_connections |
Соединение | Общее количество активных соединений, как обычных, так и постоянных. | |
active_persistent_connections |
Соединение | Общее количество активных постоянных соединений. | Общее количество активных непостоянных соединений равно:
active_connections -
active_persistent_connections . |
explicit_close |
Соединение | Общее количество явно закрытых соединений (только ext/mysqli). | Пример кода, в котором явно закрывается соединение:
$link = new mysqli(...); $link->close(...) $link = new mysqli(...); $link->connect(...) |
implicit_close |
Соединение | Общее количество неявно закрытых соединений (только ext/mysqli). | Пример кода, в котором соединение закрывается не явно:
|
disconnect_close |
Соединение | Ошибки соединения возвращаемые при вызове C API mysql_real_connect() во время установления соединения. | Вызывается disconnect_close , потому, что идентификатор
соединения, переданный в вызов C API, должен быть закрыт. |
in_middle_of_command_close |
Процесс | Соединение закрыто во время исполнения команды (результирующий набор не извлечён, после запуска запроса и до получения ответа, во время извлечения данных, во время загрузки данных с помощью LOAD DATA). | Если вы не используете асинхронные запросы, подобное может произойти только в том случае, если работа скрипта неожиданно прервалась и PHP автоматически закрыл соединение. |
init_command_executed_count |
Соединение | Общее количество запусков инициализирующих команд, к примеру
mysqli_options(MYSQLI_INIT_COMMAND , ...) . |
Количество успешно запущенных команд равно
init_command_executed_count -
init_command_failed_count . |
init_command_failed_count |
Соединение | Общее количество неудачных инициализирующих команд. |
Метрика | Область применения | Описание | Замечания |
---|---|---|---|
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 |
Соединение | Общее количество попыток послать одну из COM_* команд из PHP серверу MySQL. |
Метрика увеличивается после проверки синтаксиса команды и непосредственно
перед отсылкой соответствующего пакета серверу MySQL.
Если mysqlnd не удалось послать пакет, метрика не будет уменьшена.
В случае неудачной посылки mysqlnd вернёт предупреждение Примеры использования:
|
Прочее
Метрика | Область применения | Описание | Замечания |
---|---|---|---|
explicit_stmt_close ,
implicit_stmt_close |
Процесс | Общее количество закрытых подготовленных запросов. | Закрытие всегда происходит явно, за исключением ошибок при подготовке. |
mem_emalloc_count ,
mem_emalloc_ammount ,
mem_ecalloc_count ,
mem_ecalloc_ammount ,
mem_erealloc_count ,
mem_erealloc_ammount ,
mem_efree_count ,
mem_malloc_count ,
mem_malloc_ammount ,
mem_calloc_count ,
mem_calloc_ammount ,
mem_realloc_count ,
mem_realloc_ammount ,
mem_free_count |
Процесс | Вызовы менеджера памяти. | Только для разработчиков. |
command_buffer_too_small |
Соединение | Количество модулей сетевого командного буфера в процессе отправки команды от PHP серверу MySQL. |
mysqlnd выделяет внутренний командный/сетевой буфер размера
Если mysqlnd увеличивает размер буфера более его начального размера
Размер буфера по умолчанию составляет 4096 байт, что является наименьшим возможным значением. Это значение можно поменять
в php.ini изменив значение ключа
|
connection_reused |