(PECL mysqlnd_ms >= 1.0.0)
mysqlnd_ms_get_stats — Devuelve la distribución consultas y las estadísticas de conexión
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.
Esta función no tiene parámetros.
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. |
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" }