Warum enthält der Plan-Cache geschätzte und nicht tatsächliche Ausführungspläne?

8

Ich kann mir viele Gründe für diese Entscheidung vorstellen, geschätzte Pläne im Plan-Cache und nicht im eigentlichen Plan zu speichern. Aber ich kann die "richtige" Antwort nicht finden.

manisch
quelle

Antworten:

12

Überlegen Sie, was "tatsächlich" bedeutet. Es ist das, was tatsächlich für die Ausführung dieses Plans passiert.

Ein anderer gebräuchlicher Name für den tatsächlichen Ausführungsplan ist der "Nachausführungsplan" . Nehmen wir als Beispiel aus der Praxis an, um dieses Szenario zu korrelieren, und planen Sie eine Langlaufreise. Planen Sie also die Straßen, die Sie nehmen werden, und wie lange Sie denken, dass dies dauern wird. Aber aufgrund von Straßenarbeiten und Umwegen passiert es nicht ganz so, wie Sie es geplant haben. Das ist der eigentliche Ausführungsplan: Der tatsächliche Weg, den Sie genommen haben, um dorthin zu gelangen, wohin Sie gehen. Der geschätzte Plan wäre gewesen, was Sie dachten, dass Sie tun würden, und welchen Weg Sie dachten, dass Sie nehmen sollten.

Sie können keine Post-Execution-Pläne speichern, weil sie genau das sind ... Post-Execution . Sie enthalten Metriken darüber, was wirklich passiert ist und nicht, was SQL Server erwartet (geschätzter Ausführungsplan).

Der Plan-Cache ist eigentlich nur ein Repository von "Karten", die er wiederverwenden kann, ohne die teure Zeit für die Erstellung eines neuen aufwenden zu müssen . Tatsächliche Ausführungspläne sind nachträglich , und der Plan-Cache muss vor der Tat behandelt werden .

Thomas Stringer
quelle