Почему выполнение sp_reset_connection
системной хранимой процедуры занимает больше нескольких миллисекунд, если смотреть через SQL Server Profiler?
Я взял простую трассировку из производственной системы, используя SQL Server Profiler, а затем использовал SqlNexus для ее анализа. SqlNexus указывает, что sp_reset_connection имеет наибольшую совокупную продолжительность - 33% от общей трассы. Наблюдаемая продолжительность колеблется от 0-7 секунд (от 12 до 6 833 270 микросекунд), но в среднем составляет 0,956 с.
Я понимаю, что sp_reset_connection вызывается, когда пул соединения снова используется. Я видел предположение, что это может происходить из-за посторонних следов , но, похоже, это не так.
Я читал, что делает сервер, когда вызывается sproc, но я не думаю, что что-то из этого будет проблематичным в этом случае - код не оставляет открытых транзакций или огромных временных таблиц, которые необходимо будет очистить.
Я также посмотрел на /server/199974/sp-reset-connection-taking-a-long-time-to-run, но это не помогло.
РЕДАКТИРОВАНИЕ (2013-12-23): во всех случаях чтение и запись равны 0, а ЦП почти всегда равен 0 (только два экземпляра ненулевого ЦП, оба при 16 мс).
RPC:Starting
, RPC:Completed
и ждать типов в течение короткого периода затем просмотреть данные , чтобы увидеть , что ждать типы ИСП сталкивается в течение этого времени.