Maison >base de données >tutoriel mysql >Pourquoi les lectures logiques sont-elles si élevées lors de l'utilisation de fonctions d'agrégation fenêtrées, en particulier avec les spools de sous-expressions courants ?
Pourquoi les lectures logiques pour les fonctions d'agrégation fenêtrées sont-elles si élevées ?
Les fonctions d'agrégation fenêtrées peuvent entraîner des lectures logiques élevées signalées dans les plans d'exécution avec des bobines de sous-expression, en particulier pour les grandes tables. Cet article vise à expliquer la raison de cette observation et à fournir des informations sur la compréhension du nombre de lectures logiques pour les tables de travail.
Explication
Les lectures logiques sont comptées différemment pour les tables de travail par rapport aux tables de travail conventionnelles. tables de bobines. Dans les tables de travail, chaque lecture de ligne se traduit par une « lecture logique ». Ceci est différent du rapport sur les pages hachées pour les « vraies » tables de bobine.
La raison pour laquelle le comptage des lectures est effectué de cette manière est qu'il fournit des informations plus significatives pour l'analyse. Le suivi des pages hachées pour les tables de travail est moins utile en raison de la nature interne de ces structures. Les lignes de rapport mises en file d'attente reflètent mieux l'utilisation réelle des ressources tempdb.
Dérivation de formule
La formule dérivée pour prédire les lectures logiques de la table de travail est :
Worktable logical reads = 1 + (NumberOfRows * 2) + (NumberOfGroups * 4)
Cette formule prend en compte le suivant :
Émission de rangée de bobine primaire
La bobine primaire, chargée d'accumuler lignes et effectue le calcul global, fonctionne comme suit :
Supplémentaire Considérations
Dans votre script de test, vous avez remarqué que la réplication du même processus entraînait moins de lectures logiques (11). Cet écart est attribué à l'optimisation des algorithmes utilisés par le processeur de requêtes dans différents environnements. La formule reste valable dans les cas généraux où des boucles imbriquées ou des jointures de hachage sont utilisées.
Conclusion
Comprendre les différences de comptage pour les lectures logiques dans les tables de travail est essentiel pour interpréter avec précision les plans d'exécution impliquant des fonctions d'agrégation fenêtrées. La formule fournie offre un moyen utile d'estimer les lectures logiques de la table de travail, facilitant ainsi l'analyse des performances et les efforts d'optimisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!