SQL Server 100% CPU Utilization-одна база данных показывает высокую загрузку процессора, чем другие

У нас есть SQL server с примерно 40 различными (около 1-5GB каждый) базами данных. Сервер представляет собой процессор 8 core 2.3 G с 32Gigs ОЗУ. 27Gig закреплен на SQL Server. В utliziation процессора является наиболее близким к 100% всегда и потребление памяти-около 95%. Проблема здесь в CPU, который постоянно близок к 100% и пытается понять причину.

Я запустил начальную проверку, чтобы увидеть, какая база данных способствует высокому CPU с помощью - этой сценарий, но я не удалось подробно обосновать, что действительно потребляет CPU. Верхний запрос (из всех DBs)занимает всего около 4 секунд. IO также не является узким местом.

будет ли память виновником здесь? Я проверил разделение памяти, и кэш объектов занимает около 80% памяти, выделенной (27G) для SQL Server. Я надеюсь, что это нормально при условии, что задействовано много SPs. Запуск профилировщика, я вижу много перекомпиляций, но в основном из - за "измененной временной таблицы", " отложенной компиляции" и т. д. и не ясно, являются ли эти перекомпиляции результатом того, что планы выбрасываются из кэша из-за давления памяти

благодарен за любые мысли.

2 ответов


вы можете увидеть некоторые отчеты в SSMS:

щелкните правой кнопкой мыши имя экземпляра / Отчеты / Стандартные / лучшие сеансы

вы можете увидеть лучшие сеансы потребления процессора. Это может пролить свет на то, какие процессы SQL используют ресурсы. Есть несколько других отчетов, связанных с ЦП, если вы посмотрите вокруг. Я собирался указать еще несколько DMV, но если вы уже изучили это, я пропущу его.

можно использовать sp_BlitzCache найти лучшие потребляют CPU запросы. Вы также можете сортировать по IO и другим вещам. Это использует информацию DMV, которая накапливается между перезапусками.

в этой статье выглядит многообещающе.

некоторые stackoverflow доброта от мистера Озара.


по данным этой статья о sqlserverstudymaterial;

помните, что" %привилегированное время " не основано на 100%.Он основан на количестве процессоров.Если вы видите 200 для sqlserver.exe и система ЦП 8 и ЦП, потребляемая от SQLServer.exe-200 из 800 (только 25%).

Если значение "% привилегированное время " больше 30%, то это обычно вызвано неисправными драйверами или антивирусным программным обеспечением. В таких ситуациях убедитесь, что BIOS и фильтрующие диски обновлены, а затем попробуйте временно отключить антивирусное программное обеспечение, чтобы увидеть изменения.

Если" % время пользователя " высокое, то есть что-то потребляющее SQL Server. Существует несколько известных шаблонов, которые могут быть вызваны высоким CPU для процессов, запущенных в SQL Server, включая