Perché la sp_reset_connection
procedura memorizzata dal sistema impiegherebbe più tempo di qualche millisecondo per essere eseguita, come visto tramite SQL Server Profiler?
Ho preso una semplice traccia da un sistema di produzione usando SQL Server Profiler e poi ho usato SqlNexus per analizzarlo. SqlNexus indica che sp_reset_connection ha la durata cumulativa più alta, pari al 33% della traccia complessiva. La durata osservata varia da 0 a 7 secondi (da 12 a 6.833.270 microsecondi), ma in media a 0,956 secondi.
Comprendo che sp_reset_connection viene chiamato quando viene riutilizzata una connessione in pool. Ho visto un suggerimento che ciò può accadere a causa di tracce estranee , ma non sembra essere il caso.
Ho letto cosa sta facendo il server quando viene chiamato lo sproc ma non credo che nessuno di questi sarebbe problematico in questo caso - il codice non sta lasciando transazioni aperte o enormi tabelle temporanee che dovrebbero essere ripulite.
Ho anche guardato /server/199974/sp-reset-connection-taking-a-long-time-to-run ma non è stato utile.
EDIT (23-12-2013): in tutti i casi, letture e scritture sono 0 e la CPU è quasi sempre 0 (solo due istanze di CPU diversa da zero, entrambe a 16ms).
RPC:Starting
, RPC:Completed
e aspetto i tipi per un breve periodo poi guardare attraverso i dati per vedere quali tipi di attendere gli SPID stanno incontrando in quel periodo.