Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Quels sont les signes communs d'un problème de requête N 1


Quels sont les signes communs d'un problème de requête N 1


Les signes communs du problème de requête N + 1 incluent les indicateurs détaillés suivants:

- Nombre excessif de requêtes: le signe le plus évident est que votre application exécute beaucoup plus de requêtes de base de données que prévu. En règle générale, vous voyez une requête initiale pour récupérer une liste d'enregistrements, suivie d'une requête supplémentaire pour chaque enregistrement pour récupérer les données connexes. Par exemple, récupérer 10 utilisateurs, puis exécuter 10 requêtes distinctes pour obtenir des messages de chaque utilisateur en résulte 11 requêtes au lieu d'une seule requête optimisée [1] [3].

- Temps de réponse de l'application lents: Étant donné que chaque requête nécessite un aller-retour dans la base de données, l'effet cumulatif de nombreuses petites requêtes ralentit considérablement la récupération des données. Cela conduit à des charges de page plus lentes ou à des réponses API, ce qui rend l'application moins sensible aux demandes de l'utilisateur [1] [5].

- Charge de base de données élevée: le serveur de base de données subit une charge accrue en raison du grand nombre de requêtes, ce qui peut assassiner les ressources et réduire le débit global du système. Cela peut dégrader les performances et limiter l'évolutivité à mesure que le nombre d'utilisateurs ou de données augmente [3] [5] [6].

- Invisible dans les journaux de requête lents: Contrairement à une seule requête lente, le problème N + 1 passe souvent inaperçu dans les journaux de requête lents car chaque requête individuelle fonctionne rapidement. Cependant, l'effet agrégé de nombreuses requêtes provoque une dégradation des performances [2].

- Des requêtes inattendues ou cachées déclenchées par ORM: Lors de l'utilisation de cadres de mappage de relation d'objet (ORM), le problème N + 1 se pose souvent en raison d'un chargement paresseux ou d'une mauvaise configuration. L'accès aux entités associées dans une boucle peut déclencher des requêtes supplémentaires sans appels explicites dans le code, ce qui rend difficile la détection uniquement en regardant le code source [2] [5] [6].

- Les goulots d'étranglement des performances dans les modèles de récupération des données: Si votre application a des relations d'objets complexes et récupère des données connexes en plusieurs étapes plutôt que dans une seule requête optimisée, ce modèle est un indicateur fort du problème N + 1 [6].

En résumé, les signes courants sont un nombre inattendu de requêtes de base de données pour ce qui devrait être une simple récupération de données, des temps de réponse lents dus à plusieurs bases aller-retour de la base de données, une charge accrue sur le serveur de base de données et une difficulté à repérer le problème car chaque requête s'exécute rapidement mais provoque des retards. Ces symptômes sont particulièrement répandus dans les applications utilisant des ORM avec un comportement de chargement paresseux par défaut [1] [2] [3] [5] [6] [7].

Citations:
[1] https://planetscale.com/blog/what-is-n-1-Quey-problem-and-how-t-solve-it
[2] https://stackoverflow.com/questions/97197/what-is-the-n1-selects-problem-in-orm-object-lalation-mapping
[3] https://www.pingcap.com/article/how-to-oficiely-solve-the-n1-Query-problem/
[4] https://evnedev.com/blog/development/the-n1-Query-problem-what-is-it-and--do-you-solve-it/
[5] https://digma.ai/n1-Query-problem-and-fo-to-detect-it/
[6] https://www.neurelo.com/post/what-is-the-n-1-Query-problem
[7] https://dev.to/lovestaco/the-n1-Query-problem-the-Silent-performance-Killer-2b1c
[8] https://www.pullrequest.com/blog/avoiding-n-1-database-queries-in-asp-net-a-practical-guide/