Rechercher une fonction PHP

mysqlnd _qc _get _normalized _query _trace _log

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_normalized_query_trace_logRetourne une trace dans les logs d'une requête normalisée pour chaque requête inspectée par le cache de requêtes

Description

mysqlnd_qc_get_normalized_query_trace_log ( void ) : array

Retourne une trace dans les logs d'une requête normalisée pour chaque requête inspectée par le cache de requêtes. La collection de trace de logs est désactivée par défaut. Pour collecter les traces de log, vous devez définir la directive de configuration PHP mysqlnd_qc.collect_normalized_query_trace à 1.

Les entrées de trace de logs sont groupées par requête normalisée. La requête normalisée est la requête avec toutes les valeurs de paramètres de requête remplacées par un marqueur. Par exemple, les deux requêtes SELECT id FROM test WHERE id = 1 et SELECT id FROM test WHERE id = 2 sont normalisées en SELECT id FROM test WHERE id = ?. Chaque fois qu'une requête est inspectée par le cache de requête qui correspond au masque de requête normalisée, ses statistiques sont groupées par la chaîne de requête normalisée.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Un tableau de log de requêtes. Chaque entrée contient la chaîne de requête normalisée en plus d'autres informations.

Clé Description
query Chaîne de requête normalisée.
occurences Le nombre de requêtes qui ont correspondu à la chaîne de requête normalisée en plus de celle qui a créée l'entrée du log. La valeur est zéro si une requête a été normalisée, sa représentation normalisée a été ajoutée au log mais qu'aucune autre requête inspectée par PECL/mysqlnd_qc n'avait la même chaîne de requête normalisée.
eligible_for_caching Si la requête doit être mise en cache ou non. Une requête éligible pour la mise en cache ne sera pas nécessairement mise en cache. Il n'est pas possible de dire avec certitude si et combien de requêtes mises en cache a contribué à l'aggrégation de l'entrée du log de requête normalisée. Cependant, la comparaison du temps minimum d'exécution et du temps moyenne d'exécution permet de faire une supposition relativement juste.
avg_run_time La durée d'exécution moyen de toutes les requêtes ayant contribuées à l'entrée du log. La durée d'exécution est le temps entre l'envoi de la requête à MySQL et la réception de la réponse depuis MySQL.
avg_store_time La durée moyenne de stockage de toutes les requêtes ayant contribuées à l'entrée du log. La durée de stockage est le temps nécessaire pour récupérer un jeu de résultats d'une requête depuis le serveur vers le client, et le stocker sur le client.
min_run_time La durée minimale d'exécution de toutes les requêtes ayant contribuées à l'entrée du log.
min_store_time La durée minimale de stockage de toutes les requêtes ayant contribuées à l'entrée du log.
max_run_time La durée maximale d'exécution de toutes les requêtes ayant contribuées à l'entrée du log.
max_store_time La durée maximale de stockage de toutes les requêtes ayant contribuées à l'entrée du log.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

mysqlnd_qc.collect_normalized_query_trace=1
<?php
/* Connexion, création et peuplement de la table test */
$mysqli = new mysqli("host""user""password""schema""port""socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

/* Non mise en cache */
$res $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

/* Mise en cache */
$res $mysqli->query("/*" MYSQLND_QC_ENABLE_SWITCH "*/" "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

/* Récupération depuis le cache */
$res $mysqli->query("/*" MYSQLND_QC_ENABLE_SWITCH "*/" "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

var_dump(mysqlnd_qc_get_normalized_query_trace_log());
?>

Les exemples ci-dessus vont afficher :

array(1) {
  ["id"]=>
  string(1) "1"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(4) {
  [0]=>
  array(9) {
    ["query"]=>
    string(25) "DROP TABLE IF EXISTS test"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [1]=>
  array(9) {
    ["query"]=>
    string(27) "CREATE TABLE test (id INT )"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [2]=>
  array(9) {
    ["query"]=>
    string(40) "INSERT INTO test (id ) VALUES (? ), (? )"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [3]=>
  array(9) {
    ["query"]=>
    string(31) "SELECT id FROM test WHERE id =?"
    ["occurences"]=>
    int(2)
    ["eligible_for_caching"]=>
    bool(true)
    ["avg_run_time"]=>
    int(159)
    ["min_run_time"]=>
    int(12)
    ["max_run_time"]=>
    int(307)
    ["avg_store_time"]=>
    int(10)
    ["min_store_time"]=>
    int(8)
    ["max_store_time"]=>
    int(13)
  }
}
Rechercher une fonction PHP

Version en cache

23/11/2024 20:47:27 Cette version de la page est en cache (à la date du 23/11/2024 20:47:27) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mysqlnd-qc-get-normalized-query-trace-log.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut