mysqlnd_qc_get_cache_info
mysqlnd_qc_get_normalized_query_trace_log
Fonctions mysqlnd_qc
PHP Manual

# mysqlnd_qc_get_core_stats

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_core_stats — Statistiques collectées par le cœur du cache des requêtes

### Description

array mysqlnd_qc_get_core_stats ( void )

Retourne un tableau de statistiques collectées par le cœur du plugin de mise en cache. Des champs identiques de données seront rapportés pour tous les gestionnaires de stockage, les données étant collectées par le cœur.

La directive de configuration PHP mysqlnd_qc.collect_statistics contrôle la collection de statistiques. La collection de statistiques est désactivée par défaut pour des raisons de performance. La désactivation de la collection de statistiques désactive également la collection des temps relatifs aux statistiques.

La direction de configuration PHP mysqlnd_qc.collect_time_statistics contrôle la collection des temps relatifs aux statistiques.

Le scope des statistiques issues du cœur est le processus PHP. Suivant votre modèle de déploiement, un processus PHP peut gérer une ou plusieurs requêtes.

Les statistiques sont agrégées pour toutes les entrées du cache et tous les gestionnaires de stockage. Il n'est pas possible de demander le nombre de requêtes issues depuis des appels à l'API mysqli, PDO_MySQL ou mysql.

### Liste de paramètres

Cette fonction ne contient aucun paramètre.

### Valeurs de retour

Tableau de statistiques issues du cœur.

Statistique | Description | Version
--- | --- | ---
cache_hit | La requête est considérée comme pouvant être mise en cache et les données mises en cache ont été réutilisées. La requête est considérée comme pouvant être mise en cache et un "cache miss" est survenu mais la requête a été mise en cache par un autre processus alors que nous la traitions, et ainsi, nous avons pû récupérer le résultat depuis cette nouvelle mise en cache. | Depuis 1.0.0.

cache_miss

La requête est considérée comme pouvant être mise en cache...

- ... et a été ajoutée au cache

- ... mais la directive de configuration PHP mysqlnd_qc.cache_no_table = 1 n'a pas autorisé la mise en cache.

- ... mais un jeu de résultats non mis en mémoire tampon est demandé.

- ... mais un jeu de résultats mis en mémoire tampon est vide.

Depuis 1.0.0.

cache_put

La requête est considérée comme pouvant être mise en cache et a été ajoutée au cache. Faîtes attention lors d'un calcul de statistiques dérivées. Le gestionnaire de stockage dont la durée de stockage est au-delà du scope du processus peut rapporter à la fois cache_put = 0 et cache_hit > 0, si un autre processus a rempli le cache. Vous pouvez vouloir utiliser num_entries depuis mysqlnd_qc_get_cache_info() si le gestionnaire le supporte ( default, APC).

Depuis 1.0.0.

query_should_cache | La requête est considérée comme pouvant être mise en cache uniquement au vue de l'analyse de la requête. La requête peut (ou pas) être ajoutée au cache. Voir aussi cache_put. | Depuis 1.0.0.
query_should_not_cache | La requête est considérée comme ne pouvant pas être mise en cache uniquement au vue de l'analyse de la requête. | Depuis 1.0.0.
query_not_cached | La requête est considérée comme ne pouvant pas être mise en cache ou elle est considérée comme pouvant être mise en cache mais le gestionnaire de stockage n'a pas retourné de clé pour cette requête. | Depuis 1.0.0.

query_could_cache

La requête est considérée comme pouvant être mise en cache...

- ... et la requête a été exécutée sans erreur

- ... et les données méta montrent au moins une colonne dans le jeu de résultats

La requête peut (ou pas) être déjà présente dans le cache. Elle peut (ou pas) être ajoutée au cache plus tard.

Depuis 1.0.0.

query_found_in_cache

La requête est considérée comme pouvant être mise en cache et nous l'avons trouvée dans le cache mais nous n'avons pas encore rejoué les données du cache et nous n'avons pas encore envoyé le jeu de résultats au client. Ce n'est pas considéré comme un accès au cache, car le client peut ne pas récupérer le résultat ou les données mises en cache peuvent être défectueuses.

Depuis 1.0.0.

query_uncached_other | La requête est considérée comme pouvant être mise en cache et elle peut (ou pas) être déjà dans le cache, mais soit l'accès à ces données du cache a échoué, soit le jeu de résultats n'est pas disponible, ou soit, une autre erreur est survenue.

query_uncached_no_table

La requête n'a pas été mise en cache car le jeu de résultat a au moins une colonne qui n'a pas de nom de table dans ses méta-données. Un exemple d'une telle requête est SELECT SLEEP(1). Pour mettre en cache ce genre de requêtes, vous devez modifier la valeur par défaut de la directive de configuration PHP mysqlnd_qc.cache_no_table et définir mysqlnd_qc.cache_no_table = 1. Malgré tout, il n'est pas conseillé de mettre en cache ce genre de requêtes.

Depuis 1.0.0.

query_uncached_use_result | La requête aurait été mise en cache si le jeu de résultats de la mémoire tampon avait été utilisé. Cette situation est également considérée comme une absence de cache et cache_miss sera incrémenté. | Depuis 1.0.0.
query_aggr_run_time_cache_hit | Temps d'exécution agrégé (ms) de toutes les requêtes du cache. Les requêtes du cache sont celles qui ont incrémentées cache_hit. | Depuis 1.0.0.
query_aggr_run_time_cache_put | Temps d'exécution agrégé (ms) de toutes les requêtes non mises en cache qui ont été ajoutées dans le cache. Voir aussi cache_put. | Depuis 1.0.0.
query_aggr_run_time_total | Temps d'exécution agrégé (ms) de toutes les requêtes du cache ainsi que celles non mises en cache qui ont été inspectées et exécutées par le cache de requêtes. | Depuis 1.0.0.
query_aggr_store_time_cache_hit | Temps de stockage agrégé (ms) de toutes les requêtes du cache. Les requêtes du cache sont celles qui ont incrémentées cache_hit. | Depuis 1.0.0.
query_aggr_store_time_cache_put | Temps de stockage agrégé (ms) de toutes les requêtes non mises en cache qui ont été ajoutées dans le cache. Voir aussi cache_put. | Depuis 1.0.0.
query_aggr_store_time_total | Temps de stockage agrégé (ms) de toutes les requêtes mises en cache ainsi que celles non mises en cache qui ont été inspectées et exécutées par le cache de requêtes. | Depuis 1.0.0.
receive_bytes_recorded | Trafic réseau entrant enregistré (bytes) envoyé depuis MySQL vers PHP. Le trafic peut (ou pas) avoir été ajouté au cache. Le trafic est le total pour toutes les requêtes, qu'elles soient en cache ou non. | Depuis 1.0.0.
receive_bytes_replayed | Le trafic réseau rejoué pendant le cache. C'est la quantité totale de trafic entrant sauvegardée en raison de l'utilisation du plugin de mise en cache de requêtes. | Depuis 1.0.0.
send_bytes_recorded | Trafic réseau sortant enregistré ( bytes) envoyé depuis MySQL vers PHP. Le trafic peut (ou pas) avoir été ajouté au cache. Le trafic est le total pour toutes les requêtes, qu'elles soient en cache ou non. | Depuis 1.0.0.
send_bytes_replayed | Le trafic réseau rejoué pendant le cache. C'est la quantité totale de trafic sortant sauvegardé en raison de l'utilisation du plugin de mise en cache de requêtes. | Depuis 1.0.0.
slam_stale_refresh | Nombre d'absence du cache qui a été émis lors d'un accès à des données périmées, jusqu'à ce que le client qui a causé l'absence du cache ne rafraichisse l'entrée du cache. | Depuis 1.0.0.
slam_stale_hit | Nombre d'accès au cache avant qu'une entrée du cache périmé ne rafraichisse les données. | Depuis 1.0.0.

### Exemples

Exemple #1 Exemple avec mysqlnd_qc_get_core_stats()

`<?php
/* Activation de la collection des statistiques - par défaut : désactivé */
ini_set("mysqlnd_qc.collect_statistics", 1);
/* Activation de la collection de toutes les durées relatives aux statistiques -
par défaut : activé mais écrasé par la directive mysqlnd_qc.collect_statistics = 0 */
ini_set("mysqlnd_qc.collect_time_statistics", 1);
/* Population du cache, e.g. en utilisant mysqli */
$mysqli = new mysqli('host', 'user', 'password', 'schema');
/* Cache miss et cache put */
$mysqli->query("/*qc=on*/SELECT id FROM test");
/* Accès au cache */
$mysqli->query("/*qc=on*/SELECT id FROM test");
/* Affichage des statistiques du cœur */
var_dump(mysqlnd_qc_get_core_stats());
?>`

Les exemples ci-dessus vont afficher :

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

### Voir aussi

- Configuration à l'exécution
- mysqlnd_qc.collect_statistics
- mysqlnd_qc.time_statistics
- mysqlnd_qc_get_cache_info() - Retourne des informations sur le gestionnaire courant

mysqlnd_qc_get_cache_info
mysqlnd_qc_get_normalized_query_trace_log
Fonctions mysqlnd_qc
PHP Manual