Funciones de mysqlnd_qc
PHP Manual

mysqlnd_qc_get_core_stats

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_core_statsEstadísticas recopiladas por el núcleo de la caché de consultas

Descripción

array mysqlnd_qc_get_core_stats ( void )

Devuelve un array con las estadísticas recopiladas por el núcleo del complemento de caché. Se notificarán los mismos campos de datos para cualquier gestor de almacenamiento ya que los datos son recopilados por el núcleo.

El ajuste de configuraión de PHP mysqlnd_qc.collect_statistics controla la recopilación de estadísticas. Dicha recopilación está deshabilitada de forma predeterminada por motivos de rendimiento. La deshabilitación de la recopilación de estadísticas también deshabilitará la recopilación de las estadísticas relacionadas con los tiempos.

El ajuste de configuración de PHP mysqlnd_qc.collect_time_statistics controla la recopilación de estadísticas relacionadas con los tiempos.

El ámbito de las estadísticas del núcleo es el proceso de PHP. Dependiendo del modelo de desarrollo un proceso de PHP podría manejar una o múltiples peticiones.

Las estadísticas se acumulan para todas las entradas de la caché y para todos los gestores de almacenamiento. No es posible indicar cuántas consultas originadas desde las llamadas a las APIs de mysqli, PDO_MySQL o mysql han contribuido a los valores de los datos acumulados.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Array de estadísticas del núcleo

Estadística Descripción Versión
cache_hit La sentencia se considera almacenable en caché y los datos almacenados en caché han sido reutilizados. La sentencia se considera almacenable en caché y ocurrió una no coincidencia con la caché, aunque alguien almacenó en caché dicha sentencia mientras se procesaba y por lo tanto se puuede obtener el resultado desde la caché refrescada. Desde 1.0.0.
cache_miss La sentencia es considerada almacenable en caché...
  • ... y se ha añadido a la caché.

  • ... pero la directiva de configuración de PHP mysqlnd_qc.cache_no_table = 1 ha impedido su almacenamiento.

  • ... pero se solicita un conjunto de resultados no almacenado en búfer.

  • ... pero un conjunto de resultados almacenado en búfer estaba vacío.

Desde 1.0.0.
cache_put La sentencia se considera almacenable en caché y ha sido añadida a la caché. Se ha de tener cuidado al calcular las estadísticas derivadas. Los gestores de almacenamiento con un tiempo de vida de almacenamiento más allá del ámbito del proceso podría notificar que cache_put = 0 junto con cache_hit > 0, si otro proceso ha rellenado la caché. Se podría usar num_entries desde mysqlnd_qc_get_cache_info() si el gestor lo admite (default, APC). Desde 1.0.0.
query_should_cache La sentencia se considera almacenable en caché basándose en el análisis de la cadena de consulta. La sentencia podría o no añadirse a la caché. Véase también cache_put. Desde 1.0.0.
query_should_not_cache La sentencia se considera no almacenable en caché basándose en el análisis de la cadena de consulta. Desde 1.0.0.
query_not_cached La sentencia se considera no almacenable en caché o sí se considera pero el gestor de almacenamiento no ha devuelto una clave hash para ella. Desde 1.0.0.
query_could_cache La sentencia se considera almacenable en caché...
  • ... y ha sido ejecutada sin errores.

  • ... y los metadatos muestras al menos una columna del conjunto de resultados.

La sentencia podría o no estar ya en la caché. Podría ser o no añadida a la caché después.
Desde 1.0.0.
query_found_in_cache La sentencia se considera almacenable en caché y se ha encontrado en la misma, pero no se han reproducido los datos de la caché aún y no se ha enviado el conjunto de resultados al cliente todavía. Esto no se considera una coincidencia con la caché ya que el cliente no habría obtenido el resultado o los datos almacenados en la caché podrían ser defectuosos. Desde 1.0.0.
query_uncached_other La sentencia es considerada almacenable en caché y podría o no encontrarse ya en la misma, pero la reproducción de los datos almacenados en caché ha fallado, no hay ningún conjunto de resultados disponible, u ocurrió algún otro error.
query_uncached_no_table Statement has not been cached because the result set has at least one column which has no table name in its meta data. An example of such a query is SELECT SLEEP(1). To cache those statements you have to change default value of the PHP configuration directive mysqlnd_qc.cache_no_table and set mysqlnd_qc.cache_no_table = 1. Often, it is not desired to cache such statements. Desde 1.0.0.
query_uncached_use_result La sentencia habría sido almacenada en caché si se hubiera usado un conjunto de resultados almacenado en búfer. La situación se considera también como una no coincidencia con la caché, por lo que cache_miss tambén serán incrementado. Desde 1.0.0.
query_aggr_run_time_cache_hit Tiempo de ejecución (ms) acumulado de todas las consultas almacenadas en caché. Las consultas almacenadas en caché son aquellas que han incrementado cache_hit. Desde 1.0.0.
query_aggr_run_time_cache_put Tiempo de ejecución (ms) acumulado de todas las consultas no almacenadas en caché que han sido colocadas en la misma. Véase también cache_put. Desde 1.0.0.
query_aggr_run_time_total Tiempo de ejecución (ms) acumulado de todas las consultas no almacenadas en caché que han sido inspeccionadas y ejecutadas por la caché de consultas. Desde 1.0.0.
query_aggr_store_time_cache_hit Tiempo de almacenamiento (ms) acumulado de todas las consultas almacenadas en caché. Las consultas almacenadas en caché son aquellas que han incrementado cache_hit. Desde 1.0.0.
query_aggr_store_time_cache_put Tiempo de almacenamiento (ms) acumulado de todas las consultas no almacenadas en caché que han sido colocadas en la misma. Véase también cache_put. Desde 1.0.0.
query_aggr_store_time_total Tiempo de almacenamiento (ms) acumulado de todas las consultas no almacenadas en caché que han sido inspeccionadas y ejecutadas por la caché de consultas. Desde 1.0.0.
receive_bytes_recorded El tráfico de red entrante registrado (bytes) enviado desde MySQL a PHP. El tráfico podría o no haber sido añadido a la caché. El tráfico es el total de todas las consultas sin tener en cuenta si se almacenaron o no en caché. Desde 1.0.0.
receive_bytes_replayed El tráfico de red reproducido durante el almacenamiento de la caché. Es la cantidad total de tráfico entrante ahorrado debido al uso del complemento de caché de consultas. Desde 1.0.0.
send_bytes_recorded El tráfico de red saliente registrado (bytes) enviado desde MySQL a PHP. El tráfico podría o no haber sido añadido a la caché. El tráfico es el total de todas las consultas sin tener en cuenta si se almacenaron o no en caché. Desde 1.0.0.
send_bytes_replayed El tráfico de red reproducido durante el almacenamiento de la caché. Es la cantidad total de tráfico saliente ahorrado debido al uso del complemento de caché de consultas. Desde 1.0.0.
slam_stale_refresh El número de no coincidencias con la caché que desencadenaron el servicio de datos antiguos hasta que el cliente ocasionó que la no coincidencia con la caché refrescara la entrada de la caché. Desde 1.0.0.
slam_stale_hit El número de coincidencias con la caché mientras se refrescaba una entrada antigua de la misma. Desde 1.0.0.

Ejemplos

Ejemplo #1 Ejemplo de mysqlnd_qc_get_core_stats()

<?php
/* Habilitar la recopilación de estadísticas - predeterminado: deshabilitada */
ini_set("mysqlnd_qc.collect_statistics"1);

/* Habilitar la recopilación de todos los tiempos relacionados con estadísticas -
predeterminado: habilitado pero invalidado por mysqlnd_qc.collect_statistics = 0 */
ini_set("mysqlnd_qc.collect_time_statistics"1);

/* Rellenar la cacé, p.ej. usando mysqli */
$mysqli = new mysqli('host''usuario''contraseña''esquema');

/* No coincide con la caché y se coloca en la misma */
$mysqli->query("/*qc=on*/SELECT id FROM test");
/* Coincide con la caché */
$mysqli->query("/*qc=on*/SELECT id FROM test");

/* Mostrar las estadísticas del núcleo */
var_dump(mysqlnd_qc_get_core_stats());
?>

El resultado de los ejemplos serían:

array(26) {
  ["cache_hit"]=>
  string(1) "1"
  ["cache_miss"]=>
  string(1) "1"
  ["cache_put"]=>
  string(1) "1"
  ["query_should_cache"]=>
  string(1) "2"
  ["query_should_not_cache"]=>
  string(1) "0"
  ["query_not_cached"]=>
  string(1) "0"
  ["query_could_cache"]=>
  string(1) "2"
  ["query_found_in_cache"]=>
  string(1) "1"
  ["query_uncached_other"]=>
  string(1) "0"
  ["query_uncached_no_table"]=>
  string(1) "0"
  ["query_uncached_no_result"]=>
  string(1) "0"
  ["query_uncached_use_result"]=>
  string(1) "0"
  ["query_aggr_run_time_cache_hit"]=>
  string(1) "4"
  ["query_aggr_run_time_cache_put"]=>
  string(3) "395"
  ["query_aggr_run_time_total"]=>
  string(3) "399"
  ["query_aggr_store_time_cache_hit"]=>
  string(1) "2"
  ["query_aggr_store_time_cache_put"]=>
  string(1) "8"
  ["query_aggr_store_time_total"]=>
  string(2) "10"
  ["receive_bytes_recorded"]=>
  string(2) "65"
  ["receive_bytes_replayed"]=>
  string(2) "65"
  ["send_bytes_recorded"]=>
  string(2) "29"
  ["send_bytes_replayed"]=>
  string(2) "29"
  ["slam_stale_refresh"]=>
  string(1) "0"
  ["slam_stale_hit"]=>
  string(1) "0"
  ["request_counter"]=>
  int(1)
  ["process_hash"]=>
  int(3547549858)
}

Ver también


Funciones de mysqlnd_qc
PHP Manual