У нас есть большая база данных SQL (24 ГБ), по которой наши пользователи запускают отчеты. Некоторые отчеты интенсивны, но обычно выполняются быстро - за пару минут.
В последние недели мы сталкиваемся с проблемой, когда эти же отчеты занимают 20 минут, что не имеет смысла - ни один из SQL отчетов не был изменен.
В ходе своего исследования я обнаружил, что в мониторе активности есть сотни (в настоящее время более 300) спящих задач. У нас около 30 пользователей на рабочих станциях и, возможно, десяток пользователей Интернета (использующих веб-сайт портала, который имеет доступ к этим данным). Так что 300 спящих процессов мне кажутся безумными.
Другая часть случайной информации заключается в том, что если мы перезапустим SQL-сервер, отчеты будут работать как молния. Через пару часов правда - лажа.
Я пытаюсь отследить эту проблему, и я не уверен, как это сделать, но я полагаю, что вопрос заключается в следующем: могут ли эти спящие процессы, которые накапливаются, снижать производительность настолько, чтобы вызвать такое замедление?
Большое спасибо.
Спящие процессы потребляют некоторую память (по несколько десятков k на каждый), но 300 - это немного.
Если при перезапуске отчеты быстро исчезают, возможно, у вас есть анализ параметров.
Вы можете проверить это на бегу sp_updatestats
: это делает недействительными кэшированные планы выполнения и снова должно делать отчеты быстрыми.
Само прослушивание параметров можно решить с помощью маскирования или подсказок (много информации на StackOverflow)