Funciones de mysqlnd_ms
PHP Manual

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

array mysqlnd_ms_get_stats ( void )

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 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.

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"
}

Ver también


Funciones de mysqlnd_ms
PHP Manual