mysqlnd_ms_get_stats

(PECL mysqlnd_ms >= 1.0.0)

mysqlnd_ms_get_statsDevuelve la distribución consultas y las estadísticas de conexión

Descripción

mysqlnd_ms_get_stats ( void ) : array

Devuelve un array con las estadísticas recopiladas por el complemento de replicación y equilibrado de carga.

El ajuste de configuración de PHP mysqlnd_ms.collect_statistics controla la recopilación de estadísticas. Dicha recopilación está deshabilitada de forma predeterminada por motivos de rendimiento.

El ámbito de la estadísticas es el proceso de PHP. Dependiendo de modelo de desarrollo, un proceso de PHP puede manejar una o múltiples peticiones.

Las estadísticas se agregan para todas las conexiones y todos los gestores de almacenamiento. No es posible indicar cuántas consultas que se originan desde las llamadas a la API de mysqli, PDO_MySQL o mysql han contribuido a los valores de los datos agregados.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve NULL si la directiva de configuración de PHP mysqlnd_ms.enable ha deshabilitado el complemento. De otro modo, devuelve un array de estadísticas.

El array de estadísticas.

Estadística Descripción Versión
use_slave

La semántica de esta estadística ha cambiado entre las versiones 1.0.1 - 1.1.0.

El significado para la versión 1.0.1 es como sigue. Número de sentencias consideradas de solo lectura por el analizador de consultas interno. No están incluidas ni las sentencias que comienzan con una sugerencia SQL para forzar el uso de esclavos, ni las sentencias dirigidas a un esclavos mediante una llamada de retorno definida por el usuario. El número total de sentencias enviadas a los esclavos es use_slave + use_slave_sql_hint + use_slave_callback.

PECL/mysqlnd_ms 1.1.0 introduce el nuevo concepto de filtros encadenados. Las estadísticas ahora son establecidas por el filtro de equilibrado de carga interno. Con la versión 1.1.0, dicho filtro siempre está en el último lugar de la cadena de filtros, si se usa. En futuras versiones un filtro de equilibrado de carga podrían seguirle otros filtros, ocasionando otro cambio en el significado de la estadísica. Si, en un futuro, un a filtro de equilibrado de carga le sigue otro filtro, ya no se garantizará que la sentencia, la cual incrementa use_slave, sea ejecutada en los esclavos.

El significado para la versión 1.1.0 es como sigue. Número de sentencias enviadas a los esclavos. No están incluidas las sentencias dirigidas a un esclavo mediante el filtro 'user' (una llamada de retorno definida por el usuario). Lo último se cuenta mediante use_slave_callback.

Desde 1.0.0.
use_master

La semántica de esta estadística ha cambiado entre las versiones 1.0.1 - 1.1.0.

El significado para la versión 1.0.1 es como sigue. Número de sentencias no consideradas de solo lectura por el analizador de consultas interno. No están incluidas mi las sentencias que comienzan con una sugerencia SQL para forzar el uso del maestro, ni las sentencias dirigidas a un maestro mediante una llamada de retorno definida por el usuario. El número total de sentencias enviadas al maestro es use_master + use_master_sql_hint + use_master_callback.

PECL/mysqlnd_ms 1.1.0 introduce el nuevo concepto de filtros encadenados. Las estadísticas ahora son establecidas por el filtro de equilibrado de carga interno. Con la versión 1.1.0, dicho filtro siempre está en el último lugar de la cadena de filtros, si se usa. En futuras versiones un filtro de equilibrado de carga podrían seguirle otros filtros, ocasionando otro cambio en el significado de la estadísica. Si, en un futuro, un a filtro de equilibrado de carga le sigue otro filtro, ya no se garantizará que la sentencia, la cual incrementa use_master, sea ejecutada en los esclavos.

El significado para la versión 1.1.0 es como sigue. Número de sentencias enviadas a los maestros. No están incluidas las sentencias dirigidas a un maestro mediante el filtro 'user' (una llamada de retorno definida por el usuario). Lo último se cuenta mediante use_master_callback.

Desde 1.0.0.
use_slave_guess Número de sentencias que el analizador de consultas interno recomienda enviar a un esclavo debido a que no contienen una sugerencia SQL para forzar el uso de un servidor en particular. Dicha recomendación podría ser invalidada en la siguiente. No se garantiza que la sentencia sea ejecutada en un esclavo. Este número es las veces que la función interno is_select ha supuesto que un esclavo será usado. Véase también la función del espacio de usuario mysqlnd_ms_query_is_select(). Desde 1.1.0.
use_master_guess Número de sentencias que el analizador de consultas interno recomienda enviar a un maestro debido a que no contienen una sugerencia SQL para forzar el uso de un servidor en particular. Dicha recomendación podría ser invalidada en la siguiente. No se garantiza que la sentencia sea ejecutada en un esclavo. Este número es las veces que la función interno is_select ha supuesto que un maestro será usado. Véase también la función del espacio de usuario mysqlnd_ms_query_is_select(). Desde 1.1.0.
use_slave_sql_hint Número de sentencias enviadas a un esclavo debido a que la sentencia comienza con la sugerencia SQL para forzar el uso del esclavo. Desde 1.0.0.
use_master_sql_hint Número de sentencias enviadas a un maestro debido a que la sentencia comienza con la sugerencia SQL para forzar el uso del maestro. Desde 1.0.0.
use_last_used_sql_hint Número de sentencias enviadas al servidor que ejecutó la sentencia anterior, debido a que la sentencia comienza con la sugerencia SQL para forzar el uso del servidor usado anteriormente. Desde 1.0.0.
use_slave_callback Número de sentencias enviadas a un esclavo debido a que una llamada de retorno definida por el usuario ha elegido un servidor esclavo para la ejecución de sentencias. Desde 1.0.0.
use_master_callback Número de sentencias enviadas a un maestro debido a que una llamada de retorno definida por el usuario ha elegido un servidor maestro para la ejecución de sentencias. Desde 1.0.0.
non_lazy_connections_slave_success Número de conexiones a esclavos abiertas con éxito desde configuraciones que no usan conexiones retardadas. El número total de conexiones a esclavos abiertas con éxito es non_lazy_connections_slave_success + lazy_connections_slave_success Desde 1.0.0.
non_lazy_connections_slave_failure Número de intentos fallidos de conexión a esclavos desde configuraciones que no usan conexiones retardadas. El número total de intento fallidos de conexión a esclavos es non_lazy_connections_slave_failure + lazy_connections_slave_failure Desde 1.0.0.
non_lazy_connections_master_success Número de conexiones a maestros abiertas con éxito desde configuraciones que no usan conexiones retardadas. El número total de conexiones a maestros abiertas con éxito es non_lazy_connections_master_success + lazy_connections_master_success Desde 1.0.0.
non_lazy_connections_master_failure Número de intentos fallidos de conexión a maestros desde configuraciones que no usan conexiones retardadas. El número total de intento fallidos de conexión a maestros es non_lazy_connections_master_failure + lazy_connections_master_failure Desde 1.0.0.
lazy_connections_slave_success Número de conexiones a esclavos abiertas con éxito desde configuraciones que usan lazy connections. Desde 1.0.0.
lazy_connections_slave_failure Número de intentos fallidos de conexión a esclavos desde configuraciones que usan conexiones retardadas. Desde 1.0.0.
lazy_connections_master_success Número de conexiones a maestros abiertas con éxito desde configuraciones que usan conexiones retardadas. Desde 1.0.0.
lazy_connections_master_failure Número de intentos fallidos de conexión a maestros desde configuraciones que usan conexiones retardadas. Desde 1.0.0.
trx_autocommit_on Número de activaciones del modo autocommit mediante llamadas a la API. Este número se puede usar para monitorizar la actividad relacionada con el ajuste de configuración del complemento trx_stickiness. Si, por ejemplo, se quiere conocer si una cierta llamada a la API invoca a la función trx_autocommit() de la biblioteca mysqlnd, la cual es un requisito para trx_stickiness, se podría llamar a la función de la API de usuario en cuestión y comprobar si la estadística ha cambiado. La estadística es modificada solamente por el método trx_autocommit() interno de complemento. Desde 1.0.0.
trx_autocommit_off Número de desactivaciones del modo autocommit mediante llamadas a la API. Desde 1.0.0.
trx_master_forced Número de sentencias redirigidas al maestro mientras trx_stickiness=master y el modo autocommit están deshabilitados. Desde 1.0.0.
gtid_autocommit_injections_success Número de inyeccioines SQL realizadas con éxito en el modo 'autocommit' como parte de la emulación del id de transacciones global en el lado del cliente del complemento. Desde 1.2.0.
gtid_autocommit_injections_failure Número de inyeccioines SQL fallidas en el modo 'autocommit' como parte de la emulación del id de transacciones global en el lado del cliente del complemento. Desde 1.2.0.
gtid_commit_injections_success Número de inyeccioines SQL realizadas con éxito en el modo 'commit' como parte de la emulación del id de transacciones global en el lado del cliente del complemento. Desde 1.2.0.
gtid_commit_injections_failure Número de inyeccioines SQL fallidas en el modo 'commit' como parte de la emulación del id de transacciones global en el lado del cliente del complemento. Desde 1.2.0.
gtid_implicit_commit_injections_success Número de inyecciones SQL realizadas con éxito cuando la consignación implícita es detectada como parte de la emulación del id de transacciones global en el lado del cliente del complemento. La consignación implícita sucede, por ejemplo, cuando el modo 'autocommit' se ha desactivado, se ejecuta una consulta y se habilita el modo 'autocommit' de nuevo. En este caso, la sentencia será consignada por el servidor y el SQL a mantener es inyectado antes de que el modo 'autocommit' sea rehabilitado. Otra secuencia que causa una consignación implícita es begin(), query(), begin(). La segunda llamada a begin() consignará implícitamente la transacción iniciada por la primera llamada a begin(). begin() hace referencia llamadas a una biblioteca interna, no a llamadas a la API de usuario de PHP. Desde 1.2.0.
gtid_implicit_commit_injections_failure Número de inyecciones SQL fallidas cuando la consignación implícita es detectada como parte de la emulación del id de transacciones global en el lado del cliente del complemento. La consignación implícita sucede, por ejemplo, cuando el modo 'autocommit' se ha desactivado, se ejecuta una consulta y se habilita el modo 'autocommit' de nuevo. En este caso, la sentencia será consignada por el servidor y el SQL a mantener es inyectado antes de que el modo 'autocommit' sea rehabilitado. Desde 1.2.0.
transient_error_retries Cuántas veces ha sido reintentada una operación cuando se detectó un error transitorio. Véase también el ajuste transient_error del fichero de configuración del complemento. Desde 1.6.0.
fabric_sharding_lookup_servers_success Número de llamadas exitosas a procedimientos remotos de sharding.lookup_servers a MySQL Fabric. Se considera que una llamada tiene éxito si el complemento pudo conectar con MySQL Fabric y obtener cualquier respuesta. Esta respuesta podría o no ser comprendida por el complemento. El éxito se refiere solamente al transporte en red. Si la respuesta no fuera comprendida o indicara una condición de error, fabric_sharding_lookup_servers_xml_failure se incrementará. Desde 1.6.0.
fabric_sharding_lookup_servers_failure Número de llamadas fallidas a procedimientos remotos de sharding.lookup_servers a MySQL Fabric. Se considera que una llamada a un procedimiento remoto es fallida si existió un error de red al conectarse a, al escribir en o al leer de MySQL Fabric. Desde 1.6.0.
fabric_sharding_lookup_servers_time_total Tiempo usado en conectarse a, escribir en y leer de MySQL Fabric durante la llamada a procedimientos remotos de sharding.lookup_servers. El valor se totaliza para todas las llamadas. El tiempo se mide en microsegundos. Desde 1.6.0.
fabric_sharding_lookup_servers_bytes_total Número total de bytes recibidos de MySQL Fabric en respuesta a llamadas de sharding.lookup_servers. Desde 1.6.0.
fabric_sharding_lookup_servers_xml_failure Frecuencia con que no se entendió una respuesta de MySQL Fabric a llamadas de sharding.lookup_servers. Observe que la implementación experimental actual no distingue entre errores válidos devueltos y réplicas malformadas. Desde 1.6.0.
xa_begin Cuántas transacciones XA/distribuidas han sido iniciadas empleando mysqlnd_ms_xa_begin(). Desde 1.6.0.
xa_commit_success Cuántas transacciones XA/distribuidas han sido consignadas con éxito empleando mysqlnd_ms_xa_commit(). Desde 1.6.0.
xa_commit_failure Cuántas transacciones XA/distribuidas fallaron al consignarlas durante mysqlnd_ms_xa_commit(). Desde 1.6.0.
xa_rollback_success Cuántas transacciones XA/distribuidas han sido revertidas con éxito empleando mysqlnd_ms_xa_rollback(). La cifra no incluye las reversiones implícitas realizadas como resultado de un fallo de mysqlnd_ms_xa_commit(). Desde 1.6.0.
xa_rollback_failure Cuántas transacciones XA/distribuidas no se pudieron revertir. Esto incluye fallos de mysqlnd_ms_xa_rollback(), aunque también fallos durante la reversión al cerrar la conexión, si rollback_on_close está establecido. Véase también xa_rollback_on_close más abajo. Desde 1.6.0.
xa_participants Número total de participantes en cualquier transacción XA iniciada con mysqlnd_ms_xa_begin(). Desde 1.6.0.
xa_rollback_on_close Cuántas transacciones XA han sido revertidas implítamente cuando una conexión se cerró y rollback_on_close está establecido. Dependiendo de las políticas de código, esto podría indicar un defecto en el código, por lo que podría ser preferible limpiar recursos explícitamente. Desde 1.6.0.
pool_masters_total Número de servidores maestros (conexiones) de la agrupación de conexiones interna. Desde 1.6.0.
pool_slaves_total Número de servidores esclavos (conexiones) de la agrupación de conexiones interna. Desde 1.6.0.
pool_masters_active Número de servidores maestros (conexiones) de la agrupación de conexiones interna que se emplean actualmente para elegir una conexión. Desde 1.6.0.
pool_slaves_active Número de servidores esclavos (conexiones) de la agrupación de conexiones interna que se emplean actualmente para elegir una conexión. Desde 1.6.0.
pool_updates Con qué frecuencia ha sido reemplazada una lista de conexiones activas y ha sido instalado un nuevo conjunto de servidores maestros y esclavos. Desde 1.6.0.
pool_master_reactivated Con qué frecuencia ha sido reutilzada una conexión maestra después de ser eliminada de la lista activa. Desde 1.6.0.
pool_slave_reactivated Con qué frecuencia ha sido reutilzada una conexión esclava después de ser eliminada de la lista activa. Desde 1.6.0.

Ejemplos

Ejemplo #1 Ejemplo de mysqlnd_ms_get_stats()

<?php
printf
("mysqlnd_ms.enable = %d\n"ini_get("mysqlnd_ms.enable"));
printf("mysqlnd_ms.collect_statistics = %d\n"ini_get("mysqlnd_ms.collect_statistics"));
var_dump(mysqlnd_ms_get_stats());
?>

El resultado del ejemplo sería:

mysqlnd_ms.enable = 1
mysqlnd_ms.collect_statistics = 1
array(26) {
  ["use_slave"]=>
  string(1) "0"
  ["use_master"]=>
  string(1) "0"
  ["use_slave_guess"]=>
  string(1) "0"
  ["use_master_guess"]=>
  string(1) "0"
  ["use_slave_sql_hint"]=>
  string(1) "0"
  ["use_master_sql_hint"]=>
  string(1) "0"
  ["use_last_used_sql_hint"]=>
  string(1) "0"
  ["use_slave_callback"]=>
  string(1) "0"
  ["use_master_callback"]=>
  string(1) "0"
  ["non_lazy_connections_slave_success"]=>
  string(1) "0"
  ["non_lazy_connections_slave_failure"]=>
  string(1) "0"
  ["non_lazy_connections_master_success"]=>
  string(1) "0"
  ["non_lazy_connections_master_failure"]=>
  string(1) "0"
  ["lazy_connections_slave_success"]=>
  string(1) "0"
  ["lazy_connections_slave_failure"]=>
  string(1) "0"
  ["lazy_connections_master_success"]=>
  string(1) "0"
  ["lazy_connections_master_failure"]=>
  string(1) "0"
  ["trx_autocommit_on"]=>
  string(1) "0"
  ["trx_autocommit_off"]=>
  string(1) "0"
  ["trx_master_forced"]=>
  string(1) "0"
  ["gtid_autocommit_injections_success"]=>
  string(1) "0"
  ["gtid_autocommit_injections_failure"]=>
  string(1) "0"
  ["gtid_commit_injections_success"]=>
  string(1) "0"
  ["gtid_commit_injections_failure"]=>
  string(1) "0"
  ["gtid_implicit_commit_injections_success"]=>
  string(1) "0"
  ["gtid_implicit_commit_injections_failure"]=>
  string(1) "0"
  ["transient_error_retries"]=>
  string(1) "0"
}