Heim >Datenbank >MySQL-Tutorial >Warum zeigen meine fensterbasierten aggregierten Abfragen viele logische Lesevorgänge an?

Warum zeigen meine fensterbasierten aggregierten Abfragen viele logische Lesevorgänge an?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 04:15:11173Durchsuche

Why Are My Windowed Aggregate Queries Showing High Logical Reads?

Hohe Anzahl logischer Lesevorgänge in Ausführungsplänen für Aggregatfunktionen mit Fenster und gemeinsamen Unterausdruckspools

In Ausführungsplänen werden häufig hohe gemeldete logische Lesevorgänge für große Tabellen beobachtet Verwendung gängiger Unterausdrucksspulen. Die Formel für logische Lesevorgänge in Arbeitstabellen lautet:

Worktable Logical Reads = 1 + NumberOfRows * 2 + NumberOfGroups * 4

Erklärung

Im Gegensatz zu herkömmlichen Spooltabellen zählen Arbeitstabellen logische Lesevorgänge pro Zeilenlesevorgang, was zu einer erhöhten Anzahl logischer Lesevorgänge führt. Dies liegt daran, dass Arbeitstabellen serverintern sind und die gehashte Seitenzählung für die Analyse als weniger wertvoll erachtet wird.

Die Formel lässt sich wie folgt aufschlüsseln:

  1. 1x logischer Lesevorgang: Der Worktable wird erstellt und initialisiert.
  2. 2x Logical Reads pro Zeile: Die primäre Spule liest jede Zeile zweimal, einmal zum Einfügen in die Arbeitstabelle und noch einmal zum Lesen aus der Arbeitstabelle zur Aggregation. Auch die sekundären Spulen lesen jede Zeile zweimal.
  3. 4x logische Lesevorgänge pro Gruppe: Die primäre Spule gibt eine Zeile aus, um den Beginn jeder neuen Partition anzuzeigen, und gibt eine Dummy-Zeile zum Abschluss aus die Verarbeitung für die letzte Gruppe. Diese zusätzlichen Zeilen machen die 4-fache Zählung aus.

Zusätzliche Erkenntnisse

Paul White erklärt in seinem Blogbeitrag, dass die Formel mit dem Ausführungsplan übereinstimmt, wobei die beiden sekundären Spulen zweimal vollständig gelesen werden und die primäre Spule (Anzahl der Gruppen 1) Zeilen ausgibt. Die zusätzliche Zeile wird von der Primärspule ausgegeben, um das Ende der letzten Gruppe anzuzeigen.

Fazit

Die Formel für logische Lesevorgänge in Arbeitstabellen ist ein nützliches Werkzeug zum Verständnis der überhöhten Logik Lesezahlen, die in Ausführungsplänen mit gemeinsamen Unterausdruckspools beobachtet werden. Durch die Erkenntnis, dass Arbeitstabellen logische Lesevorgänge unterschiedlich zählen, wird es einfacher, die Lesestatistiken zu interpretieren und die Effizienz des Plans zu beurteilen.

Das obige ist der detaillierte Inhalt vonWarum zeigen meine fensterbasierten aggregierten Abfragen viele logische Lesevorgänge an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn