Назад | Перейти на главную страницу

Могут ли сотни спящих процессов в MS SQL Server снизить производительность?

У нас есть большая база данных SQL (24 ГБ), по которой наши пользователи запускают отчеты. Некоторые отчеты интенсивны, но обычно выполняются быстро - за пару минут.

В последние недели мы сталкиваемся с проблемой, когда эти же отчеты занимают 20 минут, что не имеет смысла - ни один из SQL отчетов не был изменен.

В ходе своего исследования я обнаружил, что в мониторе активности есть сотни (в настоящее время более 300) спящих задач. У нас около 30 пользователей на рабочих станциях и, возможно, десяток пользователей Интернета (использующих веб-сайт портала, который имеет доступ к этим данным). Так что 300 спящих процессов мне кажутся безумными.

Другая часть случайной информации заключается в том, что если мы перезапустим SQL-сервер, отчеты будут работать как молния. Через пару часов правда - лажа.

Я пытаюсь отследить эту проблему, и я не уверен, как это сделать, но я полагаю, что вопрос заключается в следующем: могут ли эти спящие процессы, которые накапливаются, снижать производительность настолько, чтобы вызвать такое замедление?

Большое спасибо.

Спящие процессы потребляют некоторую память (по несколько десятков k на каждый), но 300 - это немного.

Если при перезапуске отчеты быстро исчезают, возможно, у вас есть анализ параметров.

Вы можете проверить это на бегу sp_updatestats: это делает недействительными кэшированные планы выполнения и снова должно делать отчеты быстрыми.

Само прослушивание параметров можно решить с помощью маскирования или подсказок (много информации на StackOverflow)