PHP 8.4.1 Released!

Estadísticas

El controlador nativo de MySQL soporta la obtención de estadísticas sobre la comunicación entre el cliente y el servidor. Las estadísticas obtenidas son de dos tipos principales:

  • Estadísticas del cliente
  • Estadísticas de conexión

Si se está usando la extensión mysqli, estas estadísticas se pueden obtener a través de dos llamadas a la API:

Nota: Las estadísticas son acumuladas entre todas las extensiones que usan el controlador nativo de MySQL. Por ejemplo, si la extensión mysqli y el controlador PDO MySQL están configurados para usar MySQLnd, entonces las llamadas de función de mysqli y las llamadas de método de PDO afectarán las estadísticas. No hay forma de averiguar cuánto ha impactado en una estadística determinada una llamada específica a la API de cualquier extensión que haya sido compilada contra el controlador nativo de MySQL.

Acceder a las estadísticas del cliente

Para acceder a las estadísticas del cliente se necesita llamar a mysqli_get_client_stats().

Para acceder a las estadísticas de conexión se ha de llamar a mysqli_get_connection_stats().

Ambas funciones devuelven un array asociativo, el cual contiene el nombre de la estadística como clave y los datos de la estadística como valor.

MySQL Native Driver Statistics

Most statistics are associated to a connection, but some are associated to the process in which case this will be mentioned.

The following statistics are produced by the MySQL Native Driver:

Network Related Statistics
bytes_sent
Número de bytes enviados desde PHP al servidor MySQL
bytes_received
Número de bytes recibidos desde el servidor MySQL.
packets_sent
Número de paquetes enviados del protocolo Cliente Servidor de MySQL.
packets_received
Número de paquetes recividos del protocolo Cliente Servidor de MySQL.
protocol_overhead_in
Carga adicional de protocolo Cliente Servidor de MySQL en bytes para el tráfico entrante. Actualmente, sólo el Paquete de Cabecera (4 bytes) se considera como carga adicional. protocol_overhead_in = packets_received * 4
protocol_overhead_out
Carga adicional de protocolo Cliente Servidor de MySQL en bytes para el tráfico saliente. Actualmente, sólo el Paquete de Cabecera (4 bytes) se considera como carga adicional. protocol_overhead_out = packets_received * 4
bytes_received_ok_packet
Tamaño total en bytes de los paquetes OK recibidos del protocolo Cliente Servidor de MySQL. Los paquetes OK pueden contener un mensaje de estado. La longitud del mensaje de estado puede variar y, por lo tanto, el tamaño del paquete OK no es fijo.

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_ok
Número de paquetes OK recibidos del protocolo Cliente Servidor de MySQL.
bytes_received_eof_packet
Tamaño total en bytes de los paquetes OEF recibidos del protocolo Cliente Servidor de MySQL. EOF puede variar de tamaño dependiendo de la versión del servidor. También, EOF puede transportar un mensaje de error.

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_eof
Número de paquetes EOF del del protocolo Cliente Servidor de MySQL. Al igual que otras estadísticias de paquetes, el número de paquetes se incrementará incluso si PHP no recibe el paquete esperado, sino, por ejemplo, un mensaje de error.
bytes_received_rset_header_packet
Tamaño total en bytes de los paquetes de cabecera de conjuntos de resultados del protocolo Cliente Servidor de MySQL El tamaño de los paquetes varía dependiendo de la carga útil (LOAD LOCAL INFILE, INSERT, UPDATE, SELECT, mensaje de error).

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_rset_header
Número de paquetes de cabecera de conjuntos de resultados del protocolo Cliente Servidor de MySQL.
bytes_received_rset_field_meta_packet
Tamaño total en bytes de los paquetes de metadatos (información de campos) de conjuntos de resultados del protocolo Cliente Servidor de MySQL. Por supuesto, el tamaño total vaía con los campos del conjunto de resultados. El paquete también puede transportar un error o un paquete EOF en el caso de COM_LIST_FIELDS.

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_rset_field_meta
Número de paquetes de metadatos (información de campos) de conjuntos de resultados del protocolo Cliente Servidor de MySQL.
bytes_received_rset_row_packet
Tamaño total en bytes de los paquetes de datos de fila de conjuntos de resultados del protocolo Cliente Servidor de MySQL. El paquete también puede transportar un error o un paquete EOF. Se puede obtener el número de error y los paquetes EOF restando rows_fetched_from_server_normal y rows_fetched_from_server_ps de bytes_received_rset_row_packet.

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_rset_row
Número de paquetes de datos de fila de conjuntos de datos del protocolo Cliente Servidor de MySQL y su tamaño total en bytes.
bytes_received_prepare_response_packet
Tamaño total de los paquetes OK para la Inicialización de Sentencias Preparadas del protocolo Cliente Servidor de MySQL (paquetes init de sentencias preparadas). El paquete también puede transportar un error. El tamaño del paquete depende de la versión de MySQL.

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_prepare_response
Número de paquetes OK para la Inicialización de Sentencias Preparadas del protocolo Cliente Servidor de MySQL (paquetes init de sentencias preparadas)
bytes_received_change_user_packet
Tamaño total en bytes de los paquetes COM_CHANGE_USER del protocolo Cliente Servidor de MySQL. El paquete también puede transportar un error o EOF.

Nota: El tamaño total en bytes incluye el tamaño del paquete de cabecera (4 bytes, véase la carga adicional del protocolo - protocol_overhead_).

packets_received_change_user
Número de paquetes COM_CHANGE_USER del protocolo Cliente Servidor de MySQL.
packets_sent_command
Número de comandos enviados del protocolo Cliente Servidor de MySQL desde PHP a MySQL. No hay forma de conocer los comandos específicos ni cuántos han sido enviados.
bytes_received_real_data_normal
Número de bytes de carga útil obtenidos por el cliente de PHP desde mysqlnd usando el protocolo de texto. Es el tamaño de los datos reales contenidos en conjuntos de resultados que no son originados desde sentencias preparadas y que han sido obtenidos por el cliente de PHP. Observe que aunque un conjunto de resultados completo puede haber sido obtenido desde MySQL por mysqlnd, esta estadística únicamente cuenta los datos reales obtenidos desde mysqlnd por el cliente de PHP.

Un ejemplo de una secuencia de código que incrementará el valor es el siguiente:

$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->fetch_assoc();
$res->close();
Cada operación de obtención incrementará el valor.

La estadística no se incrementará si el conjunto de resultados sólo se almancena en buffer en el cliente, pero no se obtiene, como en el siguiente ejemplo:

$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->close();

bytes_received_real_data_ps
Número de bytes de la carga útil obtenida por el cliente de PHP desde mysqlnd usando el protocolo de sentencias preparadas. Es el tamaño de los datos reales contenidos en conjuntos de resultados que no son originados desde sentencias preparadas y que han sido obtenidos por el cliente de PHP. El valor no será incrementado si el conjunto de resultados no es leído subsiguientemente por el cliente de PHP. Observe que aunque un un conjunto de resultados completo puede haber sido obtenido desde MySQL por mysqlnd, esta estadística únicamente cuenta los datos reales obtenidos desde mysqlnd por el cliente de PHP. Véase también bytes_received_real_data_normal.
Result Set Related Statistics
result_set_queries
Número de consultas que han generado un conjunto de resultados. Ejemplos de consultas que generan un conjunto de resultados: SELECT, SHOW. La estadística no será incrementada si hay un error al leer el paquete de cabecera del conjunto de resultados desde la línea. línea

Nota: Esta estadística puede ser usada como una medida indirecta del número de consultas que PHP ha enviado a MySQL, Esto podría ayudar a identificar un cliente que causa una alta carga en la base de datos.

non_result_set_queries
Número de consultas que no generan un conjunto de resultados. Ejemplos de consultas que no generan un conjunto de resultados: INSERT, UPDATE, LOAD DATA. La estadística no será incrementada si hay un error al leer el paquete de cabecera del conjunto de resultados desde la línea.

Nota: Esta estadística puede ser usada como una medida indirecta del número de consultas que PHP ha enviado a MySQL, Esto podría ayudar a identificar un cliente que causa una alta carga en la base de datos.

no_index_used
Número de consultas que ha generado un conjunto de resultados pero que no usan un índice. (véase también la opción de inicio de mysqld --log-queries-not-using-indexes).

Nota: Si se desea que estas consultas sean reportadas, se puede usar mysqli_report(MYSQLI_REPORT_INDEX);. Si se prefiere una advertencia en lugar de una excepción, use mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);.

bad_index_used
Número de consultas que han generado un conjunto de resultados y que no usan un índice bueno (Véase también la opción de inicio de inicio de mysql --log-slow-queries).

Nota: Si se desea que estas consultas sean reportadas, se puede usar mysqli_report(MYSQLI_REPORT_INDEX);. Si se prefiere una advertencia en lugar de una excepción, use mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);.

slow_queries
Senetencias SQL que toman más de long_query_time segundos para ejecutarse y que requieren al menos min_examined_row_limit filas para ser examinadas.
Precaución

No reportadas a través de mysqli_report().

buffered_sets
Número de conjuntos de resultados almacenados en buffer mediante consultas normales (es decir, no a través de una sentencia preparada).

Ejemplos de llamadas a la API que almacenarán en búfer conjuntos de resultados en el cliente: mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result()

unbuffered_sets
Número de conjuntos de resultados no almacenados en buffer devueltos por consultas normales (sentencia no preparada).

Ejemplos de llamadas a la API que no almacenan en buffer conjuntos de resultados en el cliente: mysqli_use_result()

ps_buffered_sets
Número de conjuntos de resultados almacenados en buffer devueltos por sentencias preparadas.

Ejemplos de llamadas a la API que no almacenarán en buffer conjuntos de resultados en el cliente: mysqli_stmt_store_result()

ps_unbuffered_sets
Número de conjuntos de resultados no almacenados en buffer devueltos por sentencias preparadas. Por defecto, las sentencias preparadas no se almacenan en buffer, por lo que la mayoría de las sentencias preparadas se contabilizarán en esta estadística.
flushed_normal_sets
Número de conjuntos de resultados de consultas normales (sentencia no preparada) con datos no leídos que han sido volcados de manera silenciosa.

Nota: El volcado sucede solamente con conjuntos de resultados no almacenados en buffer Los conjuntos de resultados no almacenados en buffer deben ser obtenidos completamente antes de que una nueva consulta pueda ser ejecutada en la conexión, si no, MySQL lanzará un error. Si la aplicación no obtiene todas las filas de un conjunto de resultados no almacenado en buffer, mysqlnd obtendrá implícitamente el conjunto de resultados para limpiar la línea. Véase también rows_skipped_normal, rows_skipped_ps.

Algunas posibles causas de un volcado implícito:

  • Aplicación cliente defectuosa
  • El cliente para de leer después de que encuentre que lo que estaba buscando, pero ha hecho que MySQL calcule más registros que los necesarios
  • La aplicación cliente se ha detenido de improviso

flushed_ps_sets
Número de conjuntos de resultados de sentencias preparadas con datos no leídos que han sido volcados de forma silenciosa.

Nota: El volcado sucede solamente con conjuntos de resultados no almacenados en buffer Los conjuntos de resultados no almacenados en buffer deben ser obtenidos completamente antes de que una nueva consulta pueda ser ejecutada en la conexión, si no, MySQL lanzará un error. Si la aplicación no obtiene todas las filas de un conjunto de resultados no almacenado en buffer, mysqlnd obtendrá implícitamente el conjunto de resultados para limpiar la línea. Véase también rows_skipped_normal, rows_skipped_ps.

Algunas posibles causas de un volcado implícito:

  • Aplicación cliente defectuosa
  • El cliente para de leer después de que encuentre que lo que estaba buscando, pero ha hecho que MySQL calcule más registros que los necesarios
  • La aplicación cliente se ha detenido de improviso

ps_prepared_never_executed
Número de sentencias preparadas pero nunca ejecutadas.
ps_prepared_once_executed
Número de sentencias preparadas ejecutadas una única vez
rows_fetched_from_server_normal
rows_fetched_from_server_ps
Número total de conjuntos de resultados obtenidos con éxito del servidor. Sin considerar si la aplicación cliente los ha consumido o no. Algunas filas pueden no haber sido obtenidas por la aplicación cliente aunque hayan sido volcadas implícitamente. Véase también packets_received_rset_row.
rows_buffered_from_client_normal
Total number of buffered rows originating from a normal query. Número total de filas almacenadas en buffer con éxito originadas desde una consulta "normal". Este es el número de filas que han sido obtenidas de MySQL y almacenadas en buffer en el cliente.

Ejemplos de consultas que almacenarán en buffer resultados:

rows_buffered_from_server_ps
Igual que rows_buffered_from_client_normal pero para sentencias preparadas.
rows_fetched_from_client_normal_buffered
Número total de filas obtenidas por el cliente desde un conjunto de resultados almacenado en buffer creado por una consulta normal.
rows_fetched_from_client_ps_buffered
Número total de filas obtenidas por el cliente desde un conjunto de resultados almacenado en buffer creado por una consulta preparada.
rows_fetched_from_client_normal_unbuffered
Número total de filas obtenidas por el cliente desde un conjunto de resultados no almacenado en buffer creado por una consulta "normal".
rows_fetched_from_client_ps_unbuffered
Número total de filas obtenidas por el cliente desde un conjunto de resultados no almacenado en buffer creado por una consulta con sentencia preparada.
rows_fetched_from_client_ps_cursor
Número total de filas obtenidas por el cliente desde un cursor creado por una sentencia preparada.
rows_skipped_normal
rows_skipped_ps
Reservado para un uso futuro (actualmente no soportado)
copy_on_write_saved
copy_on_write_performed
This is a process level scope statistic. Con mysqlnd, las variables devueltas por las extensiones apuntan a los buffers de resultados de red internos de mysqlnd. Si no se cambian las variables, los datos obtenidos serán conservados en memoria una sola vez. Si se cambian las variables, mysqlnd tiene que realizar una copia mientras se escribe para proteger los buffers de resultados de red internos de ser cambiados. Con la Biblioteca Clientes de MySQL siempre se conservan dos veces en memoria los datos obtenidos. Una en los buffers internos de la Biblioteca Cliente de MySQL y otra en las variables devueltas por las extensiones. En teoría, mysqlnd puede ahorrar hasta un 40% de memoria, Sin embargo, observe que el ahorro de memoria no puede ser medido usando memory_get_usage()
explicit_free_result
implicit_free_result
Se trata de una estadística de alcance a nivel de conexión y proceso. Número total de conjuntos de resultados liberados.
proto_text_fetched_null
Número total de columnas de tipo MYSQL_TYPE_NULL obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_null
Número total de columnas de tipo MYSQL_TYPE_NULL obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_bit
Número total de columnas de tipo MYSQL_TYPE_BIT obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_bit
Número total de columnas de tipo MYSQL_TYPE_BIT obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_tinyint
Número total de columnas de tipo MYSQL_TYPE_TINY obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_tinyint
Número total de columnas de tipo MYSQL_TYPE_TINY obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_short
Número total de columnas de tipo MYSQL_TYPE_SHORT obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_short
Número total de columnas de tipo MYSQL_TYPE_SHORT obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_int24
Número total de columnas de tipo MYSQL_TYPE_INT24 obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_int24
Número total de columnas de tipo MYSQL_TYPE_INT24 obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_int
Número total de columnas de tipo MYSQL_TYPE_LONG obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_int
Número total de columnas de tipo MYSQL_TYPE_LONG obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_bigint
Número total de columnas de tipo MYSQL_TYPE_LONGLONG obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_bigint
Número total de columnas de tipo MYSQL_TYPE_LONGLONG obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_decimal
Número total de columnas de tipo MYSQL_TYPE_DECIMAL, or MYSQL_TYPE_NEWDECIMAL obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_decimal
Número total de columnas de tipo MYSQL_TYPE_DECIMAL, or MYSQL_TYPE_NEWDECIMAL obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_float
Número total de columnas de tipo MYSQL_TYPE_FLOAT obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_float
Número total de columnas de tipo MYSQL_TYPE_FLOAT obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_double
Número total de columnas de tipo MYSQL_TYPE_DOUBLE obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_double
Número total de columnas de tipo MYSQL_TYPE_DOUBLE obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_date
Número total de columnas de tipo MYSQL_TYPE_DATE, or MYSQL_TYPE_NEWDATE obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_date
Número total de columnas de tipo MYSQL_TYPE_DATE, or MYSQL_TYPE_NEWDATE obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_year
Número total de columnas de tipo MYSQL_TYPE_YEAR obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_year
Número total de columnas de tipo MYSQL_TYPE_YEAR obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_time
Número total de columnas de tipo MYSQL_TYPE_TIME obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_time
Número total de columnas de tipo MYSQL_TYPE_TIME obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_datetime
Número total de columnas de tipo MYSQL_TYPE_DATETIME obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_datetime
Número total de columnas de tipo MYSQL_TYPE_DATETIME obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_timestamp
Número total de columnas de tipo MYSQL_TYPE_TIMESTAMP obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_timestamp
Número total de columnas de tipo MYSQL_TYPE_TIMESTAMP obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_string
Número total de columnas de tipo MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING, or MYSQL_TYPE_VARCHAR obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_string
Número total de columnas de tipo MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING, or MYSQL_TYPE_VARCHAR obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_blob
Número total de columnas de tipo MYSQL_TYPE_TINY_BLOB, MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB, or MYSQL_TYPE_BLOB obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_blob
Número total de columnas de tipo MYSQL_TYPE_TINY_BLOB, MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB, or MYSQL_TYPE_BLOB obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_enum
Número total de columnas de tipo MYSQL_TYPE_ENUM obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_enum
Número total de columnas de tipo MYSQL_TYPE_ENUM obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_set
Número total de columnas de tipo MYSQL_TYPE_SET obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_set
Número total de columnas de tipo MYSQL_TYPE_SET obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_geometry
Número total de columnas de tipo MYSQL_TYPE_GEOMETRY obtenidas de una consulta normal (protocolo de texto de MySQL)
proto_binary_fetched_geometry
Número total de columnas de tipo MYSQL_TYPE_GEOMETRY obtenidas de una sentencia preparada (protocolo binario de MySQL)
proto_text_fetched_other
Número total de columnas de tipo s MYSQL_TYPE_* not listed previously obtenidas de una consulta normal (protocolo de texto de MySQL)

Nota: In theory, this should always be 0.

proto_binary_fetched_other
Número total de columnas de tipo MYSQL_TYPE_* not listed previously obtenidas de una sentencia preparada (protocolo binario de MySQL)

Nota: En teoría, esto debería ser siempre 0.

Connection Related Statistics
connect_success
Número total de intentos de conexión con éxito.

Nota: connect_success holds the sum of successful persistent and non-persistent connection attempts. Therefore, the number of successful non-persistent connection attempts is connect_success - pconnect_success.

pconnect_success
Número total de intentos de conexión persistente con éxito.
connect_failure
Número total de intentos de conexión fallidos.
reconnect
Se trata de una estadística de alcance a nivel de proceso.
active_connections
Se trata de una estadística de alcance a nivel de proceso. Número total de conexiones persistentes y no persistentes activas.

Nota: El número total de conexiones no persistentes activas es active_connections - active_persistent_connections.

active_persistent_connections
Se trata de una estadística de alcance a nivel de proceso. Número de conexiones persistentes activas.
explicit_close
Número total de conexiones cerradas explícitamente.

Ejemplo #1 Ejemplos de trozos de código que causan un cierre explícito

  • $link = new mysqli(/* ... */);
    $link->close(/* ... */);
    
  • $link = new mysqli(/* ... */);
    $link->connect(/* ... */);
    
implicit_close
Número total de conexiones cerradas implícitamente.

Ejemplo #2 Ejemplos de trozos de código que causan un cierre implícito

  • $link = new mysqli(/* ... */);
    $link->real_connect(/* ... */);
    
  • unset($link)
  • Conexión persistente: conexión almacenada en caché que ha sido creada con real_connect y que puede poseer un conjunto de opciones desconocidas - cerrar implícitamente para evitar devolver una conexión con opciones desconocidas
  • Conexión persistente: ping/change_user falla y ext/mysqli cierra la conexión
  • Fin de la ejecución de un script: cierra la conexiones que no han sido cerradas por el usuario
disconnect_close
Fallos de conexión indicados por la llamada a la API en C de mysql_real_connect() durante un intento de establecer una conexión.
in_middle_of_command_close
Se trata de una estadística de alcance a nivel de proceso. Una conexión ha sido cerrada en mitad de la ejecución de un comando (conjuntos de resultados pendientes no obtenidos, después de enviar una consulta y antes de obtener una respuesta, mientras se obtienen los datos, mientras se transfieren datos con LOAD DATA)
Advertencia

A menos que se usen consultas asíncronas, esto únicamente debería ocurrir si el script se detiene inesperadamente y PHP cierra las conexiones por sí solo.

init_command_executed_count
Número totas de ejecuciones de comandos init. Por ejemplo: mysqli_options(MYSQLI_INIT_COMMAND , $value). El número de ejecuciones realizadas con éxito es init_command_executed_count - init_command_failed_count.
init_command_failed_count
Número total de comnados init fallados.
Estadísticas devueltas de MySQLnd : Comando 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
Número total de intentos de enviar un cierto comando COM_* desde PHP a MySQL. Las estadísticas son incrementadas después de comprobar la línea e inmediatamente antes de enviar el paquete de protocolo cliente-servidor de MySQL correspondiente.
Precaución

Si MySQLnd falla al enviar el paquete sobre el cable, las estadísticas no serán incrementadas. En case de fallo, MySQLnd emite una advertencia de PHP Error while sending %s packet. PID=%d.

Ejemplo #3 Ejemplos de uso

  • Comprobar si PHP eviía ciertos comandos a MySQL, por ejemplo, comprobar si un cliente envía COM_PROCESS_KILL

  • Calcuar el promedio de ejecuciones de sentencias preparadas comparando COM_EXECUTE con COM_PREPARE

  • Comprobar si PHP ha ejecuato cualquier sentencia SQL no preparada comprobando si COM_QUERY es cero.

  • Identificar los scripts de PHP que ejecutan un número excesivo de sentencias SQL comprobando COM_QUERY y COM_EXECUTE

Miscelánea
explicit_stmt_close
implicit_stmt_close
Se trata de una estadística de alcance a nivel de proceso. Número total de sentencias preparadas cerradas.

Nota: Una sentencia preparada siempre se cierra explícitamente. La única vez que se cierra implícitamente es cuando falla su preparación.

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
Se trata de una estadística de alcance a nivel de proceso. Llamadas de gestión de memoria.
command_buffer_too_small
Número de extensiones de buffer de comandos de red mientras se envían comando desde PHP a MySQL. MySQLnd asigna un buffer de comandos/red interno de mysqlnd.net_cmd_buffer_size bytes por cada conexión. Si un comando del protocolo Cliente Servidor de MySQL, por ejemplo, COM_QUERY (consulta normal), no se ajusta al buffer, MySQLnd will aumentará el buffer lo que sea necesario para enviar el comando. Siempre que el buffer se extienda para una conexión, command_buffer_too_small será incrementado en uno. Si MySQLnd tiene que aumentar el buffer más allá de su tamaño inicial de mysqlnd.net_cmd_buffer_size bytes para casi todas las conexiones, se debería considerar aumentar el tamaño predeterminado para evitar reasignaciones.
connection_reused
El número total de veces que se ha reutilizado una conexión persistente.
add a note

User Contributed Notes

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