Warum sp_reset_connection
dauert die Ausführung der gespeicherten Systemprozedur aus Sicht von SQL Server Profiler länger als einige Millisekunden?
Ich habe mit SQL Server Profiler einen einfachen Trace von einem Produktionssystem genommen und ihn dann mit SqlNexus analysiert. SqlNexus gibt an, dass sp_reset_connection die höchste kumulative Dauer hat - 33% der gesamten Ablaufverfolgung. Die beobachtete Dauer reicht von 0 bis 7 Sekunden (12 bis 6.833.270 Mikrosekunden), liegt jedoch im Durchschnitt bei 0,956 Sekunden.
Ich verstehe, dass sp_reset_connection aufgerufen wird, wenn eine gepoolte Verbindung wiederverwendet wird. Ich habe einen Vorschlag gesehen, dass dies aufgrund von Fremdspuren geschehen kann , aber das scheint nicht der Fall zu sein.
Ich habe gelesen, was der Server tut, wenn der Sproc aufgerufen wird, aber ich glaube nicht, dass einer von diesen in diesem Fall problematisch wäre - der Code hinterlässt keine offenen Transaktionen oder riesigen temporären Tabellen, die bereinigt werden müssten.
Ich habe mir auch /server/199974/sp-reset-connection-taking-a-long-time-to-run angesehen, aber es war nicht hilfreich.
BEARBEITEN (23.12.2013): In allen Fällen sind Lese- und Schreibvorgänge 0 und die CPU fast immer 0 (nur zwei Instanzen einer CPU ungleich Null, beide bei 16 ms).
RPC:Starting
, RPC:Completed
und Typen warten für eine kurze Zeit dann die Daten durchsehen , um zu sehen , welche Arten warten die spids während dieser Zeit begegnen.