Einer unserer Kunden hat gerade ein Upgrade auf einen neuen Server durchgeführt.
Die Ausführung einer bestimmten gespeicherten Prozedur dauert beim ersten Ausführen mehr als drei Minuten. Nachfolgende Läufe dauern weniger als 1 Sekunde.
Dies lässt mich glauben, dass die ersten drei Minuten in erster Linie für die Berechnung des Ausführungsplans benötigt werden. Nachfolgende Läufe verwenden dann einfach den zwischengespeicherten Plan und werden sofort ausgeführt.
In unseren Testdatenbanken dauert es ungefähr 5 Sekunden, um den Plan für dasselbe Verfahren zu berechnen.
Ich sehe im Plan selbst nichts Schreckliches - obwohl ich mir nicht vorstelle, dass es relevant ist, da der Plan zeigt, wie lange es dauert, die Abfrage auszuführen, und sich nicht selbst berechnet.
Der Server ist ein 16-Kern mit 24 GB Speicher. Es tritt keine hohe CPU- oder Speicherlast auf.
Was kann eine so langsame Berechnung nur für eine bestimmte Datenbank verursachen?
Welche Schritte kann ich unternehmen, um die Ursache des Problems zu finden?
Bearbeiten
Ich habe es also geschafft, auf den Server zuzugreifen und die Abfrage mit SET SHOWPLAN_XML ON auszuführen .
Ich kann bestätigen, dass die CompileTime für die Abfrage 99% der Ausführungszeit der Abfrage beansprucht. Die AnweisungOptmEarlyAbortReason lautet "TimeOut" . In unserer Testdatenbank mit einer Kopie ihrer Datenbank lautet der Grund MemoryLimitExceeded.
StatementOptmEarlyAbortReason
?