Spec-Zone .ru
спецификации, руководства, описания, API
|
Copyright 1997-2012 PHP Documentation Group.
Используя Статистические данные
MySQL Native Driver содержит поддержку сбора статистики по передаче между клиентом и сервером. Собранные статистические данные имеют три основных типа:
Клиентская статистика
Статистика соединения
Статистика кэша Zval
Если Вы используете mysqli
расширение, эти статистические данные могут быть
получены через три вызова API:
Статистические данные агрегированы среди всех расширений тот MySQL Native Driver использования.
Например, компилируя обоих ext/mysql
и ext/mysqli
против MySQL Native Driver, обоих вызовов функции ext/mysql
и ext/mysqli
изменит статистику. Нет никакого способа узнать, насколько
определенный вызов API любого расширения, которое было скомпилировано против MySQL Native Driver,
воздействовал на определенную статистическую величину. Можно сконфигурировать Драйвер MySQL PDO, ext/mysql
и ext/mysqli
дополнительно
использовать MySQL Native Driver. Делая так, все три расширения изменят статистику.
Доступ к Клиентской Статистике
К клиентской статистике доступа Вы должны вызвать mysqli_get_client_stats
. Вызов функции не требует никаких параметров.
Функция возвращает ассоциативный массив, который содержит имя статистической величины как ключ и статистические данные как значение.
К клиентской статистике можно также получить доступ, вызывая phpinfo
Доступ к Статистике Соединения
К вызову статистики соединения доступа mysqli_get_connection_stats
. Это берет дескриптор соединения с базой данных в
качестве параметра.
Функция возвращает ассоциативный массив, который содержит имя статистической величины как ключ и статистические данные как значение.
Доступ к Статистике Кэша Zval
MySQL Native Driver также собирает статистические данные от своего внутреннего кэша Zval. К этим статистическим
данным можно получить доступ, вызывая mysqli_get_cache_stats
.
Полученная статистика кэша Zval может привести к тонкой настройке php.ini
настройки, связанные с кэшем Zval, приводящим к лучшей производительности.
Буферизованные и Небуферизованные Наборы результатов
Наборы результатов могут быть буферизованы или небуферизованы. Используя настройки по умолчанию, ext/mysql
и ext/mysqli
работа с буферизованными наборами
результатов для нормального (не подготовленный оператор) запросы. Буферизованные наборы результатов кэшируются
на клиенте. После выполнения запроса все результаты выбираются от MySQL Server и сохранены в кэше на клиенте.
Большое преимущество буферизованных наборов результатов состоит в том, что они позволяют серверу освобождать все
ресурсы, выделенные набору результатов, когда-то результаты были выбраны клиентом.
Небуферизованные наборы результатов с другой стороны сохраняются намного более длительными на сервере. Если Вы хотите уменьшить потребление памяти на клиенте, но загрузку увеличения на сервере, используйте небуферизованные результаты. Если Вы испытываете высокую загрузку сервера, и числа для небуферизованных наборов результатов высоки, следует рассмотреть перемещение загрузки в клиенты. Клиенты обычно масштабируются лучше чем серверы. "Загрузка" не только обращается к буферам памяти - сервер также должен сохранить другие ресурсы открытыми, например дескрипторы файлов и потоки, прежде, чем набор результатов сможет быть освобожден.
Готовые Операторы используют небуферизованные наборы результатов по умолчанию. Однако, можно использовать mysqli_stmt_store_result
включать буферизованным наборам результатов.
Статистика возвратилась MySQL Native Driver
Следующие таблицы показывают список статистики, возвращенной mysqli_get_client_stats
, mysqli_get_connection_stats
и mysqli_get_cache_stats
функции.
Таблица 22.64. Возвращенная mysqlnd статистика: Сеть
Статистическая величина | Контекст | Описание | Примечания |
---|---|---|---|
bytes_sent |
Соединение | Число байтов, отправленных от PHP до сервера MySQL | Может использоваться, чтобы проверить эффективность протокола сжатия |
bytes_received |
Соединение | Число байтов получается от сервера MySQL | Может использоваться, чтобы проверить эффективность протокола сжатия |
packets_sent |
Соединение | Число пакетов протокола MySQL Client Server передалось | Используемый для того, чтобы отладить Клиент-серверную реализацию протокола |
packets_received |
Соединение | Число пакетов протокола MySQL Client Server получается | Используемый для того, чтобы отладить Клиент-серверную реализацию протокола |
protocol_overhead_in |
Соединение | Издержки протокола MySQL Client Server в байтах для входящего трафика. В настоящий момент только Пакетный Заголовок (4 байта) рассматривают как издержки. protocol_overhead_in = packets_received * 4 | Используемый для того, чтобы отладить Клиент-серверную реализацию протокола |
protocol_overhead_out |
Соединение | Издержки протокола MySQL Client Server в байтах для исходящего трафика. В настоящий момент только Пакетный Заголовок (4 байта) рассматривают как издержки. protocol_overhead_out = packets_sent * 4 | Используемый для того, чтобы отладить Клиент-серверную реализацию протокола |
bytes_received_ok_packet |
Соединение | Полный размер байтов пакетов OK протокола MySQL Client Server получается. Пакеты OK могут содержать сообщение о состоянии. Длина сообщения о состоянии может измениться, и таким образом размер пакета OK не фиксируется. | Используемый для того, чтобы отладить реализацию протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_ok |
Соединение | Число пакетов OK протокола MySQL Client Server получается. | Используемый для того, чтобы отладить реализацию протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
bytes_received_eof_packet |
Соединение | Полный размер в байтах протокола MySQL Client Server пакеты EOF получается. EOF может измениться по размеру в зависимости от версии сервера. Кроме того, EOF может транспортировать сообщение об ошибке. | Используемый для того, чтобы отладить реализацию протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_eof |
Соединение | Число протокола MySQL Client Server пакеты EOF. Как с другой пакетной статистикой будет увеличено число пакетов, даже если PHP не получит ожидаемый пакет, но, например, сообщение об ошибке. | Используемый для того, чтобы отладить реализацию протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
bytes_received_rset_header_packet |
Соединение | Полный размер в байтах пакетов заголовка набора результатов протокола MySQL Client Server.
Размер пакетов изменяется в зависимости от полезной нагрузки (LOAD LOCAL
INFILE , INSERT , UPDATE ,
SELECT , сообщение об ошибке).
|
Используемый для того, чтобы отладить реализацию протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_rset_header |
Соединение | Число пакетов заголовка набора результатов протокола MySQL Client Server. | Используемый для того, чтобы отладить реализацию протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
bytes_received_rset_field_meta_packet |
Соединение | Полный размер в байтах метаданных набора результатов протокола MySQL Client Server (информация о поле) пакеты. Конечно, размер меняется в зависимости от полей в наборе результатов. Пакет может также транспортировать ошибку или пакет EOF в случае COM_LIST_FIELDS. | Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_rset_field_meta |
Соединение | Число метаданных набора результатов протокола MySQL Client Server (информация о поле) пакеты. | Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
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 .
|
Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_rset_row |
Соединение | Число пакетов данных строки набора результатов протокола MySQL Client Server и их полного размера в байтах. | Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
bytes_received_prepare_response_packet |
Соединение | Полный размер в байтах OK протокола MySQL Client Server для Готовых пакетов Инициализации
Оператора (подготовленный оператор init пакеты). Пакет может также транспортировать ошибку.
Пакетный размер зависит от версии MySQL: 9 байтов с MySQL 4.1 и 12 байтов от MySQL 5.0 на. Нет
никакого безопасного способа знать, сколько ошибок произошло. Можно быть в состоянии
предположить, что ошибка произошла, если, например, Вы всегда соединяетесь с MySQL 5.0 или более
новый и, bytes_received_prepare_response_packet != packets_received_prepare_response * 12. См. также ps_prepared_never_executed , ps_prepared_once_executed .
|
Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_prepare_response |
Соединение | Число OK протокола MySQL Client Server для Готовых пакетов Инициализации Оператора (подготовленный оператор init пакеты). | Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
bytes_received_change_user_packet |
Соединение | Полный размер в байтах протокола MySQL Client Server пакеты COM_CHANGE_USER. Пакет может также транспортировать ошибку или EOF. | Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_received_change_user |
Соединение | Число протокола MySQL Client Server пакеты COM_CHANGE_USER | Только полезный для отладки реализации протокола CS. Отметьте, что полный размер в байтах включает размер пакета заголовка (4 байта, см. издержки протокола). |
packets_sent_command |
Соединение | Число команд протокола MySQL Client Server, отправленных от PHP до MySQL. Нет никакого способа знать, какие определенные команды и сколько из них было отправлено. В своих лучших проявлениях можно использовать это, чтобы проверить, отправил ли PHP какие-либо команды MySQL, чтобы знать, можно ли рассмотреть, чтобы отключить поддержку MySQL в Вашем двоичном файле PHP. Нет также никакого способа перепроектировать число ошибок, которые, возможно, произошли, отправляя данные MySQL. Единственная ошибка, которая записывается, является command_buffer_too_small (см. ниже). | Только полезный для отладки реализации протокола CS. |
bytes_received_real_data_normal |
Соединение | Число байтов полезной нагрузки, выбранной клиентом PHP от mysqlnd
использование текстового протокола.
|
Это - размер фактических данных, содержавшихся в наборах результатов, которые не происходят из
готовых операторов и которые были выбраны клиентом PHP. Отметьте это, хотя полный набор
результатов, возможно, вытянули от MySQL mysqlnd , эта
статистическая величина только считает фактические данные вытянутыми от mysqlnd
клиентом PHP. Пример кодовой последовательности, которая увеличит значение, следующие:
$mysqli = new mysqli();$res = $mysqli->query("SELECT 'abc'");$res->fetch_assoc();$res->close(); Каждая работа выборки увеличит значение. Статистическая величина не будет увеличена, если набор результатов будет только буферизован на клиенте, но не выбран, такой как в следующем примере: $mysqli = new mysqli();$res = $mysqli->query("SELECT 'abc'");$res->close(); Эта статистическая величина доступна с версии 5.3.4 PHP. |
bytes_received_real_data_ps |
Соединение | Число байтов полезной нагрузки, выбранной клиентом PHP от mysqlnd
использование готового протокола оператора.
|
Это - размер фактических данных, содержавшихся в наборах результатов, которые происходят из
готовых операторов и которые были выбраны клиентом PHP. Значение не будет увеличено, если набор
результатов не будет впоследствии считан клиентом PHP. Отметьте это, хотя полный набор
результатов, возможно, вытянули от MySQL mysqlnd , эта
статистическая величина только считает фактические данные вытянутыми от mysqlnd
клиентом PHP. См. также bytes_received_real_data_normal .
Thisstatistic доступен с версии 5.3.4 PHP.
|
Набор результатов
Таблица 22.65. Возвращенная mysqlnd статистика: Набор результатов
Статистическая величина | Контекст | Описание | Примечания |
---|---|---|---|
result_set_queries |
Соединение | Число запросов, которые генерировали набор результатов. Примеры запросов, которые генерируют
набор результатов: SELECT , SHOW .
Статистическая величина не будет постепенно увеличена, если будет ошибка, читая пакет заголовка
набора результатов из строки.
|
Можно использовать это в качестве косвенной меры для числа запросов, которые PHP отправил MySQL, например, чтобы идентифицировать клиент, который вызывает высокую загрузку базы данных. |
non_result_set_queries |
Соединение | Число запросов, которые не генерировали набор результатов. Примеры запросов, которые не
генерируют набор результатов: INSERT , UPDATE , LOAD DATA , SHOW . Статистическая величина не будет постепенно увеличена, если
будет ошибка, читая пакет заголовка набора результатов из строки.
|
Можно использовать это в качестве косвенной меры для числа запросов, которые PHP отправил MySQL, например, чтобы идентифицировать клиент, который вызывает высокую загрузку базы данных. |
no_index_used |
Соединение | Число запросов, которые генерировали набор результатов, но не использовали индексирование (видит также mysqld, запускаются, опция "запросы журнала, не используя индексирует"). Если Вы хотите, чтобы эти запросы были сообщены, можно использовать mysqli_report (MYSQLI_REPORT_INDEX), чтобы заставить ext/mysqli выдать исключение. Если Вы предпочитаете, чтобы предупреждение вместо исключения использовало mysqli_report (MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT). | |
bad_index_used |
Соединение | Число запросов, которые генерировали набор результатов и не использовали пользу, индексирует (см. также mysqld, запускают опцию - медленные запросы журнала). | Если Вы хотите, чтобы эти запросы были сообщены, можно использовать 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 Client
Library) уважает предел памяти PHP, потому что это использует функции управления внутренней
памятью PHP, чтобы выделить память. Это - также причина почему memory_get_usage memory_get_usage |
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 |
Соединение | Общее количество строк, выбранных клиентом от небуферизованного набора результатов, создаваемого "нормальным" запросом или готовым оператором. | |
rows_fetched_from_client_ps_cursor |
Соединение | Общее количество строк выбирает клиентом от курсора, создаваемого готовым оператором. | |
rows_skipped_normal , rows_skipped_ps
|
Соединение | Зарезервированный для будущего использования (в настоящий момент не поддерживаемый) | |
copy_on_write_saved , copy_on_write_performed
|
Процесс | С mysqlnd переменные возвратились точкой расширений в mysqlnd буферы результата внутренней сети.
Если Вы не замените переменные, то выбранные данные будут сохранены только однажды в памяти.
Если Вы заменяете переменные, mysqlnd должен выполнить копию на записи, чтобы защитить буферы
результата внутренней сети от того, чтобы быть измененным. С MySQL Client Library Вы всегда
содержите выбранные данные дважды в памяти. Однажды во внутренних буферах MySQL Client Library и
однажды в переменных возвратился расширениями. В теории mysqlnd может сэкономить до 40%-ой
памяти. Однако, отметьте, что сохранение памяти не может быть измерено, используя memory_get_usage |
|
explicit_free_result , implicit_free_result
|
Соединение, Процесс (только во время готовой уборки оператора) | Общее количество освобожденных наборов результатов. | Свободное всегда считают явным, но для наборов результатов, создаваемых init командой, например,
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). | Отображение от API C / тип метаданных MySQL к имени статистики:
Отметьте, что MYSQL_*-type константы не могут быть связаны с тем же самым столбцом 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_* описанный в thepreceding
тексте.
|
Таблица 22.66. Возвращенная mysqlnd статистика: Соединение
Статистическая величина | Контекст | Описание | Примечания |
---|---|---|---|
connect_success , connect_failure |
Соединение | Общее количество успешных / отказавшая попытка подключения. | Включаются снова использованные соединения и все другие виды соединений. |
reconnect |
Процесс | Общее количество (вещественное число _) соединяет попытки, предпринятые на уже открытом дескрипторе соединения. | Кодовая последовательность $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 |
Соединение | Отказы соединения обозначаются вызовом API C mysql_real_connect |
Это вызывают disconnect_close потому что дескриптор соединения,
который передают к вызову API C, будет закрыт.
|
in_middle_of_command_close |
Процесс | Соединение было закрыто в середине выполнения команды (выдающиеся наборы результатов, не выбранные, после отправки запроса и прежде, чем получить ответ, выбирая данные, передавая данные с ДАННЫМИ ЗАГРУЗКИ). | Если Вы не используете асинхронные запросы, это должно только произойти, если Ваш сценарий неожиданно останавливается, и PHP завершает работу соединений для Вас. |
init_command_executed_count |
Соединение | Общее количество init выполнения команды, например, mysqli_options(MYSQLI_INIT_COMMAND
, ...) .
|
Число успешного выполнения init_command_executed_count -init_command_failed_count .
|
init_command_failed_count |
Соединение | Общее количество отказавших init команд. |
Таблица 22.67. Возвращенная mysqlnd статистика: Команда 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 |
Соединение | Общее количество попыток отправить определенную команду COM_* от PHP до MySQL. | Статистические данные постепенно увеличиваются после проверки строки и сразу прежде, чем отправить соответствующему MySQL клиент-серверный пакет протокола. Если mysqlnd будет не в состоянии отправить пакет по проводу, то статистика не будет постепенно уменьшена. В случае отказа mysqlnd испускает PHP предупреждение "Ошибки, передаваясь %s пакет. PID = % d." Примеры использования:
|
Разное
Таблица 22.68. Возвращенная 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 должен вырастить буфер вне своего начального размера Размер буфера значения по умолчанию составляет 2048 байтов в PHP 5.3.0. В будущих версиях
значение по умолчанию составит 4 Кбита или больше. Значение по умолчанию может измененный
любой через Рекомендуется установить размер буфера в не менее чем 4096 байтов, потому что mysqlnd также
использует это, читая определенный коммуникационный пакет из MySQL. В PHP 5.3.0, mysqlnd не
будет выращивать буфер, если MySQL отправит пакет, который больше чем текущий размер буфера.
Как следствие mysqlnd неспособен декодировать пакет, и клиентское приложение получит ошибку.
Есть только две ситуации, когда пакет может быть больше чем 2048-байтовое значение по
умолчанию С PHP 5.3.2 mysqlnd не позволяет устанавливать буферы, меньшего размера чем 4096 байтов. |
connection_reused |