Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment puis-je utiliser Laravel Debugbar pour identifier n 1 requêtes


Comment puis-je utiliser Laravel Debugbar pour identifier n 1 requêtes


Vous pouvez utiliser Laravel Debugbar efficacement pour identifier les problèmes de requête N + 1 dans votre application Laravel en suivant ces étapes et en comprenant les fonctionnalités qu'il fournit:

Quel est le problème de requête N + 1?

Le problème de requête N + 1 se produit lorsque votre application exécute une requête pour récupérer un ensemble d'enregistrements (n), puis exécute une requête supplémentaire pour chaque enregistrement pour récupérer les données connexes, ce qui donne un total de requêtes N + 1. Cela conduit à une dégradation des performances en raison de requêtes excessives de base de données [4] [5].

Utilisation de Laravel Debugbar pour détecter les requêtes N + 1

- Installation et configuration: d'abord, installez Laravel Debugbar via Composer s'il n'est pas déjà installé. Il s'intègre parfaitement à Laravel et fournit une interface visuelle pour surveiller les requêtes exécutées lors d'une demande [1] [5].

- Surveillance des requêtes en temps réel: Laravel Debugbar affiche toutes les requêtes SQL exécutées dans une demande, y compris le nombre de requêtes et leur temps d'exécution. Cela vous permet de repérer lorsque de nombreuses requêtes similaires sont exécutées à plusieurs reprises, une caractéristique des problèmes N + 1 [1] [5].

- Informations sur la requête détaillées: Debugbar fournit des informations détaillées sur chaque requête, y compris le fichier et le numéro de ligne dans votre code où la requête a été déclenchée. Cela aide à identifier le code exact provoquant les requêtes N + 1, ce qui est inestimable dans les projets plus importants [8].

- Messages personnalisés pour N + 1 Quéries: lorsqu'il est combiné avec le package de détecteur Laravel Query (qui s'intègre à Debugbar), il peut mettre en évidence explicitement N + 1 en ajoutant des avertissements ou des messages dans l'interface de Debugbar. Ce package détecte lorsqu'une requête de relation est exécutée plus qu'un nombre de fois et vous informe d'ajouter un chargement impatient [2] [3].

Comment utiliser Debugbar pour identifier les requêtes N + 1

1. Activer Debugbar en développement: assurez-vous que Debugbar est activé dans votre environnement local ou de développement pour éviter d'exposer les détails de la requête en production.

2. Chargez la page ou l'itinéraire que vous souhaitez tester: Accédez à la page soupçonnée d'avoir des problèmes N + 1.

3. Open Debugbar Pannel: Dans l'interface Debugbar (généralement en bas du navigateur), accédez à l'onglet "Requêtes".

4. Observez le nombre de requêtes: recherchez des requêtes répétées qui sont similaires mais diffèrent par les valeurs des paramètres, indiquant plusieurs requêtes récupérant des données associées une par une.

5. Vérifiez les origines de la requête: cliquez sur les requêtes individuelles pour voir la trace de pile ou le numéro de fichier / ligne où la requête a été exécutée. Cela permet d'identifier la boucle ou la section de code exacte, provoquant le problème N + 1.

6. Utilisez le détecteur de requête Laravel pour les alertes: éventuellement, installez le package de détecteur de requête Laravel qui peut ajouter des alertes à l'intérieur de Debugbar lorsque des requêtes N + 1 sont détectées, ce qui facilite le repérer sans compter manuellement les requêtes [3].

meilleures pratiques après identification

- Utilisez un chargement impatient (`avec ()`) dans vos requêtes éloquentes pour précharger des modèles liés et réduire le nombre de requêtes.

- Utilisez la prévention intégrée de Laravel en ajoutant `Model :: Emptiserlazyloading (! App () -> isProduction ())` Dans votre `appserviceprovider` pour lancer des exceptions sur le chargement paresseux pendant le développement, aidant à attraper N + 1 queries tôt [4] [9].

- Surveillez en continu les requêtes avec Debugbar pendant le développement pour maintenir des performances de requête optimales.

En tirant parti de la visualisation de la requête de Laravel de Debugbar et de l'intégration d'outils tels que Laravel Query Detector, vous pouvez identifier et résoudre efficacement les problèmes de requête N + 1, améliorant considérablement les performances de la base de données de votre application [1] [2] [3] [5].

Citations:
[1] https://www.luckymedia.dev/blog/laravel-for-beginners-Quey-performance-issues
[2] https://github.com/beyondcode/laravel-Query-detector
[3] https://beyondco.de/docs/laravel-Query-detector/usage
[4] https://laravel-news.com/laravel-n1-Query-problems
[5] https://www.linkedin.com/pulse/handling-n1-Query-problem-laravel-develovers-haseeb-ruchtaq-udusf
[6] https://laraveldaily.com/lesson/laravel-elognent-expert/n1-Query-packages-Examples
[7] https://laraveldaily.com/lesson/elognent-performance/n1-Query-debugbar-eager-loading
[8] https://www.reddit.com/r/laravel/comments/5f7y9f/debugging_the_amount_of_database_queries_per/
[9] https://planetscale.com/blog/what-is-n-1-Quey-problem-and-how-t-solve-it