# Estadísticas

El controlador nativo de MySQL contiene soporte para la recolección de estadísticas sobre la comunicación entre el cliente y el servidor. Las estadísticas recolectadas son de dos tipos principales:

- Estadísticas del cliente
- Estadísticas de la conexión

Cuando se utiliza la extensión mysqli, estas estadísticas pueden obtenerse mediante dos llamadas API:

- mysqli_get_client_stats()
- mysqli_get_connection_stats()

> Nota: Las estadísticas se agrupan entre todas las extensiones que utilizan el controlador nativo de MySQL. Por ejemplo, si la extensión mysqli y el controlador PDO MySQL están ambos configurados para usar MySQLnd, entonces las llamadas de funciones de mysqli y las llamadas de métodos de PDO afectarán las estadísticas. No hay manera de saber cuánto impacto ha tenido una cierta llamada API de una extensión que ha sido compilada sin el controlador nativo de MySQL en una cierta estadística.

## Recuperación de las estadísticas

Las estadísticas del cliente pueden recuperarse llamando a la función mysqli_get_client_stats().

Las estadísticas de conexión pueden recuperarse llamando a la función mysqli_get_connection_stats().

Las dos funciones devuelven un array asociativo, donde el nombre de una estadística es la clave para los datos estadísticos correspondientes.

## Estadísticas del controlador nativo de MySQL

La mayoría de las estadísticas están asociadas a una conexión, pero algunas están asociadas al proceso, en cuyo caso esto será mencionado.

Las siguientes estadísticas son producidas por el controlador nativo de MySQL:

Estadísticas relacionadas con la red
`bytes_sent`
  El número de bytes enviados de PHP al servidor MySQL.
`bytes_received`
  El número de bytes recibidos del servidor MySQL.
`packets_sent`
  El número de paquetes enviados por el protocolo cliente-servidor MySQL.
`packets_received`
  El número de paquetes recibidos del protocolo cliente-servidor MySQL.
`protocol_overhead_in`
  La sobrecarga del protocolo cliente-servidor MySQL en bytes para el tráfico entrante. Actualmente, solo el encabezado de paquete (4 bytes) se considera como sobrecarga. `protocol_overhead_in = packets_received * 4`
`protocol_overhead_out`
  La sobrecarga del protocolo cliente-servidor MySQL en bytes para el tráfico saliente. Actualmente, solo el encabezado de paquete (4 bytes) se considera como sobrecarga. `protocol_overhead_out = packets_received * 4`
`bytes_received_ok_packet`
  El tamaño total en bytes de los paquetes OK del protocolo cliente-servidor MySQL recibidos. Los paquetes OK pueden contener un mensaje de estado. La longitud del mensaje de estado puede variar y por lo tanto el tamaño de un paquete OK no es fijo.

  > Nota: El tamaño total en bytes incluye el tamaño del encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_ok`
  El número de paquetes OK del protocolo cliente-servidor MySQL recibidos.
`bytes_received_eof_packet`
  El tamaño total en bytes de los paquetes EOF del protocolo cliente-servidor MySQL recibidos. El tamaño de un paquete EOF puede variar dependiendo de la versión del servidor. Además, un paquete EOF puede transportar un mensaje de error.

  > Nota: El tamaño total en bytes incluye el tamaño del encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_eof`
  El número de paquetes EOF del protocolo cliente-servidor MySQL recibidos. Al igual que con otras estadísticas de paquetes, el número de paquetes será incrementado incluso si PHP no recibe el paquete esperado, sino, por ejemplo, un mensaje de error.
`bytes_received_rset_header_packet`
  El tamaño total en bytes de los encabezados de paquetes de resultados del protocolo cliente-servidor MySQL recibidos. El tamaño del encabezado del paquete puede variar 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 encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_rset_header`
  El número de paquetes de encabezados de resultados del protocolo cliente-servidor MySQL recibidos.
`bytes_received_rset_field_meta_packet`
  El tamaño total en bytes de los paquetes de metadatos de resultados del protocolo cliente-servidor (información de campo). Por supuesto, el tamaño varía con los campos del resultado. El paquete también puede transportar un error o un paquete EOF en caso de COM_LIST_FIELDS.

  > Nota: El tamaño total en bytes incluye el tamaño del encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_rset_field_meta`
  El número de paquetes de metadatos de resultados del protocolo cliente-servidor recibidos (información de campo).
`bytes_received_rset_row_packet`
  El tamaño total en bytes de los datos de fila de resultados del protocolo cliente-servidor MySQL recibidos. El paquete también puede transportar un error o un paquete EOF. Se puede calcular el número de errores y 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 encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_rset_row`
  El número de paquetes de datos de fila de resultados del protocolo cliente-servidor MySQL recibidos.
`bytes_received_prepare_response_packet`
  El tamaño total en bytes de los paquetes OK del protocolo cliente-servidor MySQL recibidos para la inicialización de declaraciones preparadas (paquetes de inicialización de declaración preparada). 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 encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_prepare_response`
  El número de paquetes OK del protocolo cliente-servidor MySQL recibidos para la inicialización de declaraciones preparadas (paquetes de inicialización de declaración preparada).
`bytes_received_change_user_packet`
  El tamaño total en bytes de los paquetes COM_CHANGE_USER del protocolo cliente-servidor MySQL recibidos. El paquete también puede transportar un error o un paquete EOF.

  > Nota: El tamaño total en bytes incluye el tamaño del encabezado del paquete (4 bytes, ver la sobrecarga del protocolo).

`packets_received_change_user`
  El número de paquetes COM_CHANGE_USER del protocolo cliente-servidor MySQL recibidos.
`packets_sent_command`
  El número de comandos MySQL enviados por PHP al servidor MySQL. No hay manera de saber qué comandos específicos y cuántos de ellos han sido enviados.
`bytes_received_real_data_normal`
  El número de bytes de carga útil recuperados por el cliente PHP desde `mysqlnd` usando el protocolo de texto. Esto es el tamaño de los datos reales contenidos en los conjuntos de resultados que no provienen de declaraciones preparadas y que han sido recuperados por el cliente PHP. Es de notar que aunque un conjunto de resultados completo haya podido ser extraído de MySQL por `mysqlnd`, esta estadística solo cuenta los datos reales extraídos de `mysqlnd` por el cliente PHP.

  Un ejemplo de 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 recuperación incrementará el valor.

  Sin embargo, la estadística no será incrementada si el conjunto de resultados es solo almacenado en búfer en el cliente, pero no extraído, como en el siguiente ejemplo:

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

`bytes_received_real_data_ps`
  El número de bytes de carga útil recuperados por el cliente PHP desde `mysqlnd` usando el protocolo de declaración preparada. Esto es el tamaño de los datos reales contenidos en los conjuntos de resultados que provienen de declaraciones preparadas y que han sido recuperados por el cliente PHP. El valor no será incrementado si el conjunto de resultados no es leído por el cliente PHP. Es de notar que aunque un conjunto de resultados completo haya podido ser extraído de MySQL por `mysqlnd`, esta estadística solo cuenta los datos reales extraídos de `mysqlnd` por el cliente PHP. Ver también `bytes_received_real_data_normal`.

Estadísticas relacionadas con los conjuntos de resultados
`result_set_queries`
  El 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 encabezado del paquete del conjunto de resultados.

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

`non_result_set_queries`
  El número de consultas que no han generado un conjunto de resultados. Ejemplos de consultas que no generan un conjunto de resultados: `INSERT`, `UPDATE`, `LOAD DATA`. Esta estadística no será incrementada si hay un error al leer el encabezado del paquete del conjunto de resultados.

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

`no_index_used`
  El número de consultas que han generado un conjunto de resultados pero no han utilizado un índice. (Ver también la opción de inicio de mysqld `--log-queries-not-using-indexes`).

  > Nota: Estas consultas pueden ser reportadas mediante una excepción llamando `mysqli_report(MYSQLI_REPORT_INDEX);`. Es posible reportarlas mediante un aviso llamando `mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);`.

`bad_index_used`
  El número de consultas que han generado un conjunto de resultados y no han utilizado un buen índice. (Ver también la opción de inicio de mysqld `--log-slow-queries`).

  > Nota: Estas consultas pueden ser reportadas mediante una excepción llamando `mysqli_report(MYSQLI_REPORT_INDEX);`. Es posible reportarlas mediante un aviso llamando `mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);`.

`slow_queries`
  Las declaraciones SQL que han tomado más de `long_query_time` segundos para ejecutarse y han necesitado al menos `min_examined_row_limit` filas para examinar.
  Precaución

  No reportado mediante mysqli_report().

`buffered_sets`
  El número de conjuntos de resultados almacenados en búfer devueltos por consultas normales (es decir, no mediante una declaración preparada).

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

`unbuffered_sets`
  El número de conjuntos de resultados no almacenados en búfer devueltos por consultas normales (es decir, no mediante una declaración preparada).

  Ejemplos de llamadas API que no almacenarán en búfer los conjuntos de resultados en el cliente: mysqli_use_result()

`ps_buffered_sets`
  El número de conjuntos de resultados almacenados en búfer devueltos por declaraciones preparadas.

  Ejemplos de llamadas API que almacenarán en búfer los conjuntos de resultados en el cliente: mysqli_stmt_store_result()

`ps_unbuffered_sets`
  El número de conjuntos de resultados no almacenados en búfer devueltos por declaraciones preparadas. Por omisión, las declaraciones preparadas no son almacenadas en búfer, por lo que la mayoría de las declaraciones preparadas serán contabilizadas en esta estadística.
`flushed_normal_sets`
  El número de juegos de resultados devueltos por consultas normales (es decir, no mediante una declaración preparada) con datos no leídos que han sido silenciosamente vaciados.

  > Nota: El vaciado solo ocurre con conjuntos de resultados no almacenados en búfer. Los conjuntos de resultados no almacenados en búfer deben ser recuperados completamente antes de que una nueva consulta pueda ser ejecutada en la conexión, de lo contrario MySQL lanzará un error. Si la aplicación no recupera todas las filas de un conjunto de resultados no almacenado en búfer, mysqlnd recupera implícitamente el conjunto de resultados para vaciar la fila. Ver también `rows_skipped_normal`, `rows_skipped_ps`.

  > Algunas causas posibles para un vaciado implícito:

  > - Aplicación cliente defectuosa
  > - Cliente se detuvo de leer después de encontrar lo que buscaba pero hizo que MySQL calculara más filas de las necesarias
  > - La aplicación cliente se detuvo de manera inesperada

`flushed_ps_sets`
  El número de juegos de resultados devueltos por declaraciones preparadas con datos no leídos que han sido silenciosamente vaciados.

  > Nota: El vaciado solo ocurre con conjuntos de resultados no almacenados en búfer. Los conjuntos de resultados no almacenados en búfer deben ser recuperados completamente antes de que una nueva consulta pueda ser ejecutada en la conexión, de lo contrario MySQL lanzará un error. Si la aplicación no recupera todas las filas de un conjunto de resultados no almacenado en búfer, mysqlnd recupera implícitamente el conjunto de resultados para vaciar la fila. Ver también `rows_skipped_normal`, `rows_skipped_ps`.

  > Algunas causas posibles para un vaciado implícito:

  > - Aplicación cliente defectuosa
  > - Cliente se detuvo de leer después de encontrar lo que buscaba pero hizo que MySQL calculara más filas de las necesarias
  > - La aplicación cliente se detuvo de manera inesperada

`ps_prepared_never_executed`
  El número de declaraciones preparadas preparadas pero nunca ejecutadas.
`ps_prepared_once_executed`
  El número de declaraciones preparadas ejecutadas una sola vez.
`rows_fetched_from_server_normal`
`rows_fetched_from_server_ps`
  El número total de filas de conjunto de resultados recuperadas del servidor. Esto incluye las filas que no han sido leídas por el cliente pero han sido recuperadas implícitamente debido a conjuntos de resultados no almacenados en búfer vaciados. Ver también `packets_received_rset_row`.
`rows_buffered_from_client_normal`
  El número total de filas almacenadas en búfer provenientes de una consulta normal. Esto es el número de filas que han sido recuperadas de MySQL y almacenadas en búfer en el cliente.

  Ejemplos de consultas que almacenarán en búfer los conjuntos de resultados:

  - mysqli_query()
  - mysqli_store_result()
`rows_buffered_from_client_ps`
  Equivalente a `rows_buffered_from_client_normal` pero para las declaraciones preparadas.
`rows_fetched_from_client_normal_buffered`
  El número total de filas recuperadas por el cliente desde un conjunto de resultados almacenado en búfer creado por una consulta normal.
`rows_fetched_from_client_ps_buffered`
  El número total de filas recuperadas por el cliente desde un conjunto de resultados almacenado en búfer creado por una declaración preparada.
`rows_fetched_from_client_normal_unbuffered`
  El número total de filas recuperadas por el cliente desde un conjunto de resultados no almacenado en búfer creado por una consulta normal.
`rows_fetched_from_client_ps_unbuffered`
  El número total de filas recuperadas por el cliente desde un conjunto de resultados no almacenado en búfer creado por una declaración preparada.
`rows_fetched_from_client_ps_cursor`
  El número total de filas recuperadas por el cliente desde un cursor creado por una declaración preparada.
`rows_skipped_normal`
`rows_skipped_ps`
  Reservado para uso futuro (actualmente no soportado).
`copy_on_write_saved`
`copy_on_write_performed`
  Esto es una estadística de alcance de proceso. Con mysqlnd, las variables devueltas por las extensiones apuntan a mysqlnd búferes de resultados internos. Si los datos no son modificados, los datos extraídos solo se conservan una vez en memoria. Sin embargo, cualquier modificación de los datos requerirá que mysqlnd realice una operación de copia-al-escribir.
`explicit_free_result`
`implicit_free_result`
  Esto es una estadística de alcance de conexión y de proceso. El número total de resultados liberados.
`proto_text_fetched_null`
  El número total de columnas de tipo `MYSQL_TYPE_NULL` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_null`
  El número total de columnas de tipo `MYSQL_TYPE_NULL` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_bit`
  El número total de columnas de tipo `MYSQL_TYPE_BIT` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_bit`
  El número total de columnas de tipo `MYSQL_TYPE_BIT` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_tinyint`
  El número total de columnas de tipo `MYSQL_TYPE_TINY` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_tinyint`
  El número total de columnas de tipo `MYSQL_TYPE_TINY` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_short`
  El número total de columnas de tipo `MYSQL_TYPE_SHORT` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_short`
  El número total de columnas de tipo `MYSQL_TYPE_SHORT` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_int24`
  El número total de columnas de tipo `MYSQL_TYPE_INT24` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_int24`
  El número total de columnas de tipo `MYSQL_TYPE_INT24` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_int`
  El número total de columnas de tipo `MYSQL_TYPE_LONG` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_int`
  El número total de columnas de tipo `MYSQL_TYPE_LONG` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_bigint`
  El número total de columnas de tipo `MYSQL_TYPE_LONGLONG` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_bigint`
  El número total de columnas de tipo `MYSQL_TYPE_LONGLONG` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_decimal`
  El número total de columnas de tipo `MYSQL_TYPE_DECIMAL`, o `MYSQL_TYPE_NEWDECIMAL` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_decimal`
  El número total de columnas de tipo `MYSQL_TYPE_DECIMAL`, o `MYSQL_TYPE_NEWDECIMAL` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_float`
  El número total de columnas de tipo `MYSQL_TYPE_FLOAT` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_float`
  El número total de columnas de tipo `MYSQL_TYPE_FLOAT` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_double`
  El número total de columnas de tipo `MYSQL_TYPE_DOUBLE` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_double`
  El número total de columnas de tipo `MYSQL_TYPE_DOUBLE` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_date`
  El número total de columnas de tipo `MYSQL_TYPE_DATE`, o `MYSQL_TYPE_NEWDATE` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_date`
  El número total de columnas de tipo `MYSQL_TYPE_DATE`, o `MYSQL_TYPE_NEWDATE` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_year`
  El número total de columnas de tipo `MYSQL_TYPE_YEAR` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_year`
  El número total de columnas de tipo `MYSQL_TYPE_YEAR` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_time`
  El número total de columnas de tipo `MYSQL_TYPE_TIME` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_time`
  El número total de columnas de tipo `MYSQL_TYPE_TIME` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_datetime`
  El número total de columnas de tipo `MYSQL_TYPE_DATETIME` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_datetime`
  El número total de columnas de tipo `MYSQL_TYPE_DATETIME` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_timestamp`
  El número total de columnas de tipo `MYSQL_TYPE_TIMESTAMP` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_timestamp`
  El número total de columnas de tipo `MYSQL_TYPE_TIMESTAMP` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_string`
  El número total de columnas de tipo `MYSQL_TYPE_STRING`, `MYSQL_TYPE_VARSTRING` o `MYSQL_TYPE_VARCHAR` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_string`
  El número total de columnas de tipo `MYSQL_TYPE_STRING`, `MYSQL_TYPE_VARSTRING` o `MYSQL_TYPE_VARCHAR` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_blob`
  El número total de columnas de tipo `MYSQL_TYPE_TINY_BLOB`, `MYSQL_TYPE_MEDIUM_BLOB`, `MYSQL_TYPE_LONG_BLOB`, o `MYSQL_TYPE_BLOB` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_blob`
  El número total de columnas de tipo `MYSQL_TYPE_TINY_BLOB`, `MYSQL_TYPE_MEDIUM_BLOB`, `MYSQL_TYPE_LONG_BLOB`, o `MYSQL_TYPE_BLOB` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_enum`
  El número total de columnas de tipo `MYSQL_TYPE_ENUM` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_enum`
  El número total de columnas de tipo `MYSQL_TYPE_ENUM` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_set`
  El número total de columnas de tipo `MYSQL_TYPE_SET` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_set`
  El número total de columnas de tipo `MYSQL_TYPE_SET` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_geometry`
  El número total de columnas de tipo `MYSQL_TYPE_GEOMETRY` recuperadas desde una consulta normal (protocolo de texto MySQL).
`proto_binary_fetched_geometry`
  El número total de columnas de tipo `MYSQL_TYPE_GEOMETRY` recuperadas desde una declaración preparada (protocolo binario MySQL).
`proto_text_fetched_other`
  El número total de columnas de tipos `MYSQL_TYPE_*` no listados anteriormente recuperadas desde una consulta normal (protocolo de texto MySQL).

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

`proto_binary_fetched_other`
  El número total de columnas de tipo `MYSQL_TYPE_*` no listados anteriormente recuperadas desde una declaración preparada (protocolo binario MySQL).

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

Estadísticas relacionadas con la conexión
`connect_success`
  El número total de intentos de conexión exitosos.

  > Nota: `connect_success` contiene la suma de los intentos de conexión persistentes y no persistentes exitosos. Por lo tanto, el número de intentos de conexión no persistentes exitosos es `connect_success - pconnect_success`.

`pconnect_success`
  El número total de intentos de conexión persistentes exitosos.
`connect_failure`
  El número total de intentos de conexión fallidos.
`reconnect`
  Esto es una estadística de alcance de proceso.
`active_connections`
  Esto es una estadística de alcance de proceso. El 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`
  Esto es una estadística de alcance de proceso. El número total de conexiones persistentes activas.
`explicit_close`
  El número total de conexiones cerradas explícitamente.

  Ejemplo #1 Ejemplos de fragmentos de código que provocan un cierre explícito

  -     $link = new mysqli(/* ... */);
        $link->close(/* ... */);

  -     $link = new mysqli(/* ... */);
        $link->connect(/* ... */);

`implicit_close`
  El número total de conexiones cerradas implícitamente.

  Ejemplo #2 Ejemplos de fragmentos de código que provocan un cierre implícito

  -     $link = new mysqli(/* ... */);
        $link->real_connect(/* ... */);

  - `unset($link)`
  - Conexión persistente: una conexión agrupada ha sido creada con real_connect y puede haber opciones desconocidas definidas - 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 del script: cerrar conexiones que no han sido cerradas por el usuario
`disconnect_close`
  Fallos de conexión indicados por la llamada de API C `mysql_real_connect` durante un intento de establecer una conexión.
`in_middle_of_command_close`
  Esto es una estadística de alcance de proceso. Una conexión ha sido cerrada en medio de la ejecución de un comando (conjuntos de resultados no recuperados, después de enviar una consulta y antes de recuperar una respuesta, durante la recuperación de datos, durante la transferencia de datos con LOAD DATA).
  Advertencia

  A menos que se usen consultas asíncronas, esto solo debería ocurrir si la aplicación PHP terminó inesperadamente y PHP cierra automáticamente la conexión.

`init_command_executed_count`
  El número total de ejecuciones de comandos de inicialización. Por ejemplo: `mysqli_options(MYSQLI_INIT_COMMAND , $value)`. El número de ejecuciones exitosas es `init_command_executed_count - init_command_failed_count`.
`init_command_failed_count`
  El número total de fallos en la ejecución de comandos de inicialización.

Estadísticas relacionadas con los comandos `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`
  El número total de intentos de enviar un cierto comando `COM_*` de PHP a MySQL. La estadística es incrementada después de verificar la línea y justo antes de enviar el paquete de protocolo cliente-servidor MySQL correspondiente.
  Precaución

  Si MySQLnd falla al enviar el paquete en la red, las estadísticas no serán decrementadas. En caso de fallo, MySQLnd emite un aviso PHP Error while sending %s packet. PID=%d.

  Ejemplo #3 Ejemplos de uso

  - Verificar si PHP envía ciertos comandos a MySQL, por ejemplo, verificar si un cliente envía `COM_PROCESS_KILL`
  - Calcular el número promedio de ejecuciones de comandos preparados comparando `COM_EXECUTE` con `COM_PREPARE`
  - Verificar si PHP ha ejecutado declaraciones SQL no preparadas verificando si `COM_QUERY` es cero
  - Identificar los scripts PHP que ejecutan un número excesivo de declaraciones SQL verificando `COM_QUERY` y `COM_EXECUTE`

Estadísticas diversas
`explicit_stmt_close`
`implicit_stmt_close`
  Esto es una estadística de alcance de proceso. El número total de declaraciones preparadas cerradas explícitamente.

  > Nota: Una declaración preparada siempre es cerrada explícitamente. La única vez que es cerrada implícitamente es cuando su preparación falla.

`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`
  Esto es una estadística de alcance de proceso. Llamadas a la gestión de memoria.
`command_buffer_too_small`
  El número de extensiones de búfer de comando de red al enviar comandos de PHP a MySQL. MySQLnd asigna un búfer de comando/red interno de mysqlnd.net_cmd_buffer_size bytes para cada conexión. Si un protocolo de comando de servidor MySQL, por ejemplo `COM_QUERY` (consulta normal), no cabe en el búfer, MyQSLnd extenderá el búfer a lo que sea necesario para enviar el comando. Cada vez que el búfer es extendido para una conexión `command_buffer_too_small` será incrementado en uno. Si mysql es obligado a hacer crecer el búfer más allá de su tamaño inicial de mysqlnd.net_cmd_buffer_size bytes para casi cada conexión, se deberían considerar aumentar el tamaño por defecto para evitar las reasignaciones.
`connection_reused`
  El número total de veces que una conexión persistente ha sido reutilizada.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open