#sql-server #cpu-usage
#sql-сервер #загрузка процессора
Вопрос:
Отчет SQL Server — ЛУЧШИЕ запросы по общему времени процессора возвращает тот же запрос для 10 запросов с высоким потреблением ЦП.
SELECT SUM(db.buffer_pool_size) AS instance_buffer_pool_size
FROM (SELECT COUNT_BIG(*) * (8*1024) AS buffer_pool_size
FROM sys.dm_os_buffer_descriptors WITH (nolock)
WHERE database_id <> 32767 -- ResourceDB
GROUP BY database_id) db
Этот запрос выполняется во всех базах данных, присутствующих на SQL Server.
Мы выполнили поиск по всем представлениям, функциям, процедурам, шагам задания SQL и не нашли ничего, откуда выполняется этот запрос.
Есть предложения о том, как проверить, откуда он выполняется?
Комментарии:
1. Используйте профилировщик или расширенные сеансы событий, чтобы конкретно зафиксировать выполнение этого запроса, и включите в событие любую необходимую информацию (исходный IP, сеанс, имя учетной записи и т.д.), Чтобы сузить круг источников.
2. Я бы тоже выбрал Profiler, но вам нужно дождаться запуска запроса. Возможно, вы можете выполнить поиск по части запроса (например, по именам таблиц или столбцам) в объектах вашей базы данных и сузить область поиска. Это может помочь: ВЫБЕРИТЕ * ИЗ sys.objects, ГДЕ OBJECT_DEFINITION (object_id) ИМЕЕТ вид ‘%%’. Также вы можете использовать сохраненные sp_depends процедуры для поиска таких зависимостей.
3. Я проверил и обнаружил, что запрос выполняется с самого сервера. Единственной новой вещью, которую мы сделали на сервере, была установка нового relic agent, и после отключения запроса выполнение прекратилось. Спасибо за вашу помощь, ребята!!! ПРИВЕТСТВИЯ