recherche
Maisonbase de donnéestutoriel mysqlPourquoi 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 ?

Why are logical reads so high when using windowed aggregate functions, especially with common subexpression spools?

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 :

  • 1 : Représente le chargement initial des données dans la table de travail.
  • NumberOfRows * 2 : Les deux spools secondaires ( créé pour réduire le coût de retour des lignes) sont entièrement lus deux fois.
  • NumberOfGroups * 4 : Le spool principal émet des lignes comme expliqué ci-dessous, ce qui entraîne le nombre de valeurs de groupe distinctes (plus 1).

Émission de rangée de bobine primaire

La bobine primaire, chargée d'accumuler lignes et effectue le calcul global, fonctionne comme suit :

  • Lit chaque ligne de l'entrée et l'écrit dans la table de travail.
  • Lorsqu'un nouveau groupe est rencontré, il émet une ligne à l'opérateur de boucles imbriquées, indiquant le début d'une nouvelle partition de groupe.
  • Les moyennes pour chaque groupe sont calculées à l'aide des lignes du table de travail.
  • Les moyennes sont jointes aux lignes de la table de travail.
  • La table de travail est tronquée pour préparer le groupe suivant.
  • Pour traiter le groupe final, la bobine émet une ligne factice.

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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Quelles sont les différences de syntaxe entre MySQL et d'autres dialectes SQL?Quelles sont les différences de syntaxe entre MySQL et d'autres dialectes SQL?Apr 27, 2025 am 12:26 AM

MySQLDIFFERSFromothersqlDialictsinsyntaxforlimit, auto-imprémentation, stringcomparison, sous-questionnaires et performanceanalysis.1) MySqluseSlimit, WhilesQlServerUseStopandorAnUseSrownum.2)

Qu'est-ce que le partitionnement MySQL?Qu'est-ce que le partitionnement MySQL?Apr 27, 2025 am 12:23 AM

Le partitionnement MySQL améliore les performances et simplifie la maintenance. 1) Diviser les grandes tables en petits morceaux par des critères spécifiques (tels que les gammes de dattes), 2) Divisez physiquement les données en fichiers indépendants, 3) MySQL peut se concentrer sur des partitions connexes lors de l'interrogation, 4) L'optimiseur de requête peut ignorer les partitions non liées, 5) le choix de la bonne stratégie de partition et le maintenir régulièrement est la clé.

Comment accordez-vous et révoquez-vous les privilèges dans MySQL?Comment accordez-vous et révoquez-vous les privilèges dans MySQL?Apr 27, 2025 am 12:21 AM

Comment accorder et révoquer les autorisations dans MySQL? 1. Utilisez la déclaration de subvention pour accorder des autorisations, telles que GrantallPrivilegesondatabase_Name.to'Username'@'host '; 2. Utilisez la déclaration de révocation pour révoquer les autorisations, telles que Revokeallprivilegesondatabase_name.from'username'@'host 'pour garantir la communication opportune des modifications d'autorisation.

Expliquez les différences entre les moteurs de stockage InnoDB et Myisam.Expliquez les différences entre les moteurs de stockage InnoDB et Myisam.Apr 27, 2025 am 12:20 AM

INNODB convient aux applications qui nécessitent un support de transaction et une concurrence élevée, tandis que Myisam convient aux applications qui nécessitent plus de lectures et moins d'écritures. 1.InNODB prend en charge les verrous de transaction et de bancs, adaptés aux systèmes de commerce électronique et bancaire. 2.Myisam fournit une lecture et une indexation rapides, adaptées aux systèmes de blogs et de gestion de contenu.

Quels sont les différents types de jointures à MySQL?Quels sont les différents types de jointures à MySQL?Apr 27, 2025 am 12:13 AM

Il existe quatre types de jointures principales dans MySQL: innerjoin, gauche, droite et fullouterjoin. 1.Innerjoin Renvoie toutes les lignes dans les deux tableaux qui remplissent les conditions de jointure. 2.Leftjoin Renvoie toutes les lignes de la table de gauche, même s'il n'y a pas de lignes correspondantes dans la table droite. 3. Le droit est contraire à la gauche et renvoie toutes les lignes dans la table droite. 4.FulLouterJoin Renvoie toutes les lignes dans les deux tableaux qui se rencontrent ou ne remplissent pas les conditions de jointure.

Quels sont les différents moteurs de stockage disponibles dans MySQL?Quels sont les différents moteurs de stockage disponibles dans MySQL?Apr 26, 2025 am 12:27 AM

MySQLoffersVariousStorageEngines, chacune, chacun desCasses: 1) InnodbisidealForApplications newedingacidcompenciance and highcurrency, soutenant les transactions et manqueurs

Quelles sont les vulnérabilités de sécurité communes dans MySQL?Quelles sont les vulnérabilités de sécurité communes dans MySQL?Apr 26, 2025 am 12:27 AM

Les vulnérabilités de sécurité courantes dans MySQL incluent l'injection SQL, les mots de passe faibles, la configuration d'autorisation incorrecte et les logiciels unpudés. 1. L'injection SQL peut être évitée en utilisant des instructions de prétraitement. 2. Les mots de passe faibles peuvent être évités en utilisant de force des stratégies de mot de passe solides. 3. Une mauvaise configuration d'autorisation peut être résolue par examen régulier et ajustement des autorisations utilisateur. 4. Les logiciels unpus peuvent être corrigés en vérifiant et mise à jour régulièrement la version MySQL.

Comment pouvez-vous identifier les requêtes lentes dans MySQL?Comment pouvez-vous identifier les requêtes lentes dans MySQL?Apr 26, 2025 am 12:15 AM

L'identification des requêtes lentes dans MySQL peut être réalisée en activant les journaux de requête lents et en définissant des seuils. 1. Activer les journaux de requête lents et définir les seuils. 2. Afficher et analyser les fichiers journaux de requête lente et utiliser des outils tels que MySqlDumpSlow ou Pt-Query-digest pour une analyse approfondie. 3. Optimisation des requêtes lentes peut être réalisée grâce à l'optimisation de l'index, à la réécriture de la requête et à l'évitement de l'utilisation de Select *.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft