2012-04-04 5 views
0

Abfragepläne sind im Plan Cache für beide Ansichten und gewöhnliche gespeicherte SQL-Zwischengespeicherte Abfragepläne?

von here

ok.

Ein für allemal: Wie hilft mir?

Selbst wenn ich die Query plans im cache für eine Abfrage haben: Sobald ich die Abfrage ausführen er wird die gesamte Tabelle/s + Aggregate scannen + .....

und wenn ich laufe es morgen - Es wird die gesamte Tabelle/s + Aggregate wieder scannen ....

gibt es keine Situation, wie das sein kann: "AH !!! I haben Daten im Cache, so nehmen Ill es von dort .... ... (weil vielleicht die Tabelle geändert hat ...)

so, wo der Nutzen wahr ist?

I scheint etwas zu vermissen.

danke.

+1

Es sind keine zwischengespeicherten Daten, sondern Abfragepläne. Weißt du, was ein Abfrageplan * ist? – AakashM

+0

@AakashM ja ich weiß. Ich kann nicht sehen, wie es mir helfen kann, während es zwischengespeichert wird. –

+1

Es hilft Ihnen, denn wenn Sie die gleiche Abfrage erneut ausführen, müssen Sie die Kosten für die erneute Erstellung des Abfrageplans nicht bezahlen. Die Kompilierung kann ein wesentlicher Teil der Leistung sein, die mit der gesamten Abfrageausführung verbunden ist. –

Antwort

3

Angenommen, wir eine Abfrage wie

SELECT * 
FROM 
    A 
    INNER JOIN B ON -- omitted 
    INNER JOIN C ON -- omitted 
    -- omitted 
    INNER JOIN Q ON -- omitted 

mit jedoch viele Tabellen haben, die ist. Offensichtlich beeinflusst die Reihenfolge, in der diese Verknüpfungen ausgeführt werden, die Leistung. Auch die Entscheidung für die beste Reihenfolge, vorausgesetzt, die Tabelle Statistiken, dauert auch eine gewisse Zeit.

den Abfrageplan Durch das Cachen, können wir die Kosten für der Entscheidung über die beste Reihenfolge nur einmal zahlen - jedes nachfolgende Mal, wenn die Abfrage ausgeführt wird, wissen wir bereits zum ersten K zu nehmen, kommen sie zu E, dann H und so weiter.

Natürlich bedeutet dies, dass eine signifikante Änderung in der Datenstatistik unseren Plan ungültig macht, aber Caching alles beinhaltet immer einen Kompromiss.


Eine Ressource, die Sie mehr über das Wie und Warum der Abfrageplanung nützlich sein können für das Lernen ist SQL Coach - beginnen mit THE Analogy.

2

Die Antwort lautet, dass der Abfrageplan zwischengespeichert wird, um die Kosten für die Erstellung des Abfrageplans jedes Mal zu vermeiden. Wenn Sie die Abfrage zum zweiten Mal ausführen (oder eine andere, die denselben Plan verwenden kann), muss sie nicht zahlen, um den Kompilierungsprozess erneut auszuführen, sondern ruft den Plan nur aus dem Cache ab.

+0

danke für die antwort. Ist das so wichtig? die ganze Aufgabe ist, die Abfrage tatsächlich auszuführen und nicht "den Plan anzusehen" ...? –

+1

Ja, es kann * ziemlich * wichtig sein. Und so funktioniert SQL Server. Sie haben das getan, weil es wichtig ist. –

1

Einfach gesagt, ein Ausführungsplan ist eine Erklärung, wie die Abfrage durchgeführt wird, nicht die tatsächlichen Daten in der Abfrage (so kann ein Ausführungsplan immer wieder angewendet werden, wenn Sie eine Abfrage erneut ausführen).

Eine Analogie wäre zu sagen, dass ein Ausführungsplan einem Rezept ähnlich ist - es ist die Methode, die Daten/das Essen zu machen, nicht die Daten/Mahlzeit selbst.

Die Verbesserung ist, dass es Zeit braucht, damit die DB-Engine den Ausführungsplan für eine Abfrage ausarbeitet. Wenn sie zwischengespeichert wird, benötigen Sie diesen Aufwand nicht beim nächsten Mal, wenn Sie dieselbe Abfrage ausführen.

0

Wenn Sie eine Abfrage an SQL senden, durchläuft es einige Schritte, um das Ergebnis anzuzeigen. Die wichtigsten sind Parsing, Algebrizer und Abfrageoptimierer.

Der Abfrageoptimierer ist dafür verantwortlich, einen Ausführungsplan zu erstellen, oder einen aus dem Cache auszuwählen, und wie ich weiß, ist der Prozess zum Erstellen eines Plans sehr teuer, daher ist es besser, wenn Sie einen wiederverwenden können.

Der Hauptpunkt ist, dass der Exec-Plan nicht die Daten selbst enthält, nur eine Möglichkeit zum Abrufen von der BD. Sobald der Plan "definiert" ist, wird er an die Speicher-Engine übergeben und zum Abrufen der Daten verwendet.

Verwandte Themen