(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 intecciones 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. | Desde 1.2.0. |
gtid_implicit_commit_injections_failure | Número de intecciones 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. |
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" }