Heim >Datenbank >MySQL-Tutorial >Warum führen Fensteraggregatfunktionen mit gemeinsamen Unterausdruckspools zu solch hohen logischen Lesevorgängen?

Warum führen Fensteraggregatfunktionen mit gemeinsamen Unterausdruckspools zu solch hohen logischen Lesevorgängen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-29 21:52:10314Durchsuche

Why Do Windowed Aggregate Functions with Common Subexpression Spools Result in Such High Logical Reads?

Warum sind logische Lesevorgänge für Fensteraggregatfunktionen mit gemeinsamen Unterausdruckspools so hoch?

Sie haben das in Ausführungsplänen mit gemeinsamen Unterausdrücken bemerkt Spools sind die gemeldeten logischen Lesevorgänge für große Tabellen deutlich höher als erwartet. Die Untersuchung zeigt eine Formel, die wahr zu sein scheint: Logische Lesevorgänge der Arbeitstabelle = 1 NumberOfRows 2 NumberOfGroups 4.

Verstehen der Formel

Die hohe Logik Lesevorgänge ergeben sich aus der einzigartigen Art und Weise, wie Arbeitstabellen Lesevorgänge verarbeiten. Logische Lesevorgänge beziehen sich in diesem Zusammenhang auf die Anzahl der gelesenen Zeilen, nicht auf gehashte Seiten. Das bedeutet, dass die Arbeitstabelle für jede verarbeitete Zeile einen logischen Lesevorgang registriert.

Aufschlüsselung der logischen Lesevorgänge

  • 1: Der Anfang lesen, um die erste Zeile zu verarbeiten.
  • NumberOfRows * 2: Jede Zeile wird während der beiden Durchgänge der sekundären Spulen zweimal gelesen.
  • NumberOfGroups * 4: Die primäre Spule gibt vier Zeilen pro Gruppe aus: eine zum Starten der Gruppe, eine zum Starten der Gruppe, eine zum Starten der Gruppe und eine zum Starten der Gruppe. einer zum Beenden der Gruppe und zwei zum Speichern der Gesamtwerte.

Replikationsversuch mit Lower Logische Lesevorgänge

Ihr Versuch, den Prozess mit einer Heap-Tabelle zu replizieren, zeigt nur 11 logische Lesevorgänge, weil:

  • Weniger Zeilen: Ihre Testtabelle hat nur 5 Zeilen im Vergleich zur größeren #Orders-Tabelle.
  • Keine Verschachtelung Schleifen: Ihre Abfrage verwendet ein OUTER APPLY anstelle von verschachtelten Schleifen, wodurch die Notwendigkeit einer Dummy-Zeile entfällt.

Fazit

Die Formel, die Sie „found“ gilt als wahr, da es die Anzahl der von der Arbeitstabelle gelesenen Zeilen genau wiedergibt. Die höheren logischen Lesevorgänge sind auf die zeilenbasierte Zählmethode und nicht auf Ineffizienz zurückzuführen. Der in Ihrer ursprünglichen Abfrage verwendete Plan mit verschachtelten Schleifen verstärkt diese Zahl noch weiter.

Das obige ist der detaillierte Inhalt vonWarum führen Fensteraggregatfunktionen mit gemeinsamen Unterausdruckspools zu solch hohen logischen Lesevorgängen?. 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