Position actuelle: Accueil> Derniers articles> Comment suivre la requête lente via mysqli :: débogage

Comment suivre la requête lente via mysqli :: débogage

M66 2025-06-01

Les performances des requêtes de base de données sont un problème courant lors du développement d'applications PHP. Les requêtes lentes affectent non seulement la vitesse de réponse du système, mais peuvent également entraîner une charge de serveur accrue. Afin de résoudre ce problème efficacement, MySQL fournit un puissant outil de débogage - MySQLI :: Debug , qui peut aider les développeurs à suivre l'exécution des requêtes SQL. Cet article présentera en détail comment utiliser la fonction MySQLI :: Debug pour suivre et résoudre efficacement les problèmes de requête lents.

1. Qu'est-ce que Mysqli :: débogage ?

MySQLI :: Debug est une méthode de débogage fournie par l'extension MySQLI, permettant aux développeurs de sortir des informations de débogage des connexions MySQL via cette fonction. En utilisant MySQLI :: Debug , vous pouvez afficher des journaux détaillés sur les requêtes de base de données, y compris le moment de l'exécution de la requête, si une exception s'est produite et des informations plus connexes.

2. Comment activer Mysqli :: Debug ?

Pour activer MySqli :: Debug , vous devez d'abord créer une connexion MySQLI. Ensuite, appelez la fonction MySqli :: Debug pour commencer à capturer des informations de débogage. L'exemple de code est le suivant:

 <?php
// créer MySQLi connecter
$mysqli = new mysqli("localhost", "root", "password", "database_name");

// 检查connecter是否成功
if ($mysqli->connect_error) {
    die("connecter失败: " . $mysqli->connect_error);
}

// Activer debug modèle
$mysqli->debug('trace');

// Exécuter une requête
$query = "SELECT * FROM users WHERE status = 'active'";
$result = $mysqli->query($query);

// Résultat de sortie
if ($result) {
    while ($row = $result->fetch_assoc()) {
        echo "utilisateur: " . $row['name'] . "<br>";
    }
} else {
    echo "La requête a échoué: " . $mysqli->error;
}

// 关闭connecter
$mysqli->close();
?>

Dans le code ci-dessus, $ mysqli-> debug ('trace') permet le mode de débogage et effectue une requête simple. À l'heure actuelle, toutes les informations sur les connexions MySQL seront affichées à l'écran pour faciliter les développeurs pour résoudre les problèmes.

3. Explication du contenu de la sortie de MySqli :: Debug

Lorsque vous activez MySQLI :: Debug , le système sortira de nombreuses informations détaillées. Ces informations peuvent vous aider à identifier les goulots d'étranglement ou les erreurs potentiels. Le contenu de la sortie commun comprend:

  • Instruction de requête : affiche toutes les requêtes SQL exécutées.

  • Temps d'exécution de la requête : Si le temps d'exécution de la requête est trop long, cela vous aidera à découvrir des requêtes lentes.

  • Message d'erreur : tels que les codes d'erreur et les messages lorsque la requête a échoué.

  • Informations sur la connexion : affiche des informations détaillées de la connexion actuelle, telles que le protocole MySQL, la version, etc. utilisé.

4. Comment utiliser MySqli :: Debug pour suivre la requête lente?

Lorsque vous rencontrez des problèmes de requête lents, vous pouvez capturer des informations de débogage via mysqli :: débogage et analyser les causes de la requête lente. Vous pouvez analyser les requêtes lentes en suivant les étapes:

  1. Activer le mode de débogage : Comme mentionné précédemment, activez le débogage à l'aide de $ mysqli-> debug ('trace') .

  2. Exécutez la requête : exécutez les requêtes SQL dans l'application.

  3. Analysez la sortie : vérifiez la requête SQL et le temps d'exécution dans la sortie de débogage. Si certaines requêtes sont exécutées trop longtemps, elles sont marquées comme lentes.

  4. Requête optimisée : pour les requêtes lentes, vérifiez la complexité des instructions SQL, que ce soit requise, ou si les requêtes peuvent être optimisées d'une autre manière.

5. Combiné avec une analyse des fichiers journaux et une requête lente

En plus de déboguer la sortie d'informations via MySQLI :: Debug , MySQL permet également à des requêtes lentes d'être enregistrées dans des fichiers journaux. En combinant les deux, vous pouvez analyser et résoudre des problèmes de requête lents plus efficacement.

Activer les journaux de requête lents dans les fichiers de configuration MySQL:

 [mysqld]
slow_query_log = 1
slow_query_log_file = /path/to/your/slow_query.log
long_query_time = 1  # Les enregistrements dépassent 1 Requête en quelques secondes

De cette manière, lorsque le temps d'exécution de la requête dépasse le seuil défini, MySQL enregistrera les requêtes dans le journal. Vous pouvez vérifier ces fichiers journaux régulièrement pour trouver des requêtes lentes et les optimiser.

6. Exemple: suivi de la requête lente

Supposons que vous ayez une requête qui devient lente dans des situations de concurrence élevées, en utilisant MySqli :: Debug peut vous aider à trouver rapidement la cause première du problème.

 <?php
// créer MySQLi connecter
$mysqli = new mysqli("localhost", "root", "password", "m66_net_database");

// Activer debug modèle
$mysqli->debug('trace');

// Exécuter une requête
$query = "SELECT * FROM orders WHERE order_date > '2023-01-01' AND status = 'pending'";
$result = $mysqli->query($query);

// Vérifiez si la requête est réussie
if ($result) {
    while ($row = $result->fetch_assoc()) {
        echo "CommandeID: " . $row['order_id'] . "<br>";
    }
} else {
    echo "La requête a échoué: " . $mysqli->error;
}

// 关闭connecter
$mysqli->close();
?>

Dans le code ci-dessus, en supposant que l'instruction de requête est exécutée lentement, MySQLI :: Debug fournira des informations d'exécution détaillées pour vous aider à trouver des goulots d'étranglement de performances.

7. Conclusion

MySQLI :: Debug est un puissant outil de débogage qui peut aider les développeurs à suivre et à résoudre les problèmes de requête lents. En activant le mode de débogage et en analysant les informations de sortie, vous pouvez facilement trouver les raisons de requêtes lentes et d'optimiser davantage les opérations de base de données. Avec le journal de requête lent de MySQL, vous pouvez avoir une compréhension plus complète des goulots d'étranglement de performance de la requête et assurer le fonctionnement efficace de l'application.