У меня довольно мощный сервер базы данных с установленным SQL Server 2008 R2. На нем есть только одна база данных, доступ к которой осуществляется с 2 серверов (около 5/6 приложений). Проблема в том, что как только приложения начинают указывать на базу данных, загрузка ЦП системы возрастает до 100%, а сам sqlserver использует 95 +%.
Я проверил профайлер, никаких тяжелых запросов там нет. Я проверил активные соединения, их едва ли 150. Тем не менее загрузка ЦП составляет около 100%, а приложения испытывают медленный ответ / соединение с сервером базы данных получает отказ.
База данных grus, мне действительно нужны идеи.
Я бы также посмотрел на sys.dm_os_wait_stats, чтобы узнать, чего ждет сервер.
Если несколько запросов действительно так сильно влияют на ЦП, я подозреваю, что выполняется много параллельного выполнения. Это то, что нужно искать.
Выполняете ли вы регулярное обслуживание базы данных, такое как резервное копирование, обновление статистики, перестроение индексов? Я видел, как сильно фрагментированная база данных вызывает проблемы с производительностью, которые вы описываете.
Когда вы смотрите на профилировщик, там должен быть столбец CPU. Запросы с наивысшим значением в столбце - это те, которые используют много процессорного времени. Также найдите sp_whoisactive и установите его на машину. Когда вы запустите его, он покажет вам запросы, выполнение которых требует много времени и ресурсов ЦП во время выполнения.