Я столкнулся с высоким уровнем использования процессора в определенное время. 4 процессора, 16 ГБ оперативной памяти, 29 баз данных общий размер файла данных 60 ГБ. я часто получал высокое количество потоков слишком велико. Может ли кто-нибудь помочь мне в этом?Высокая загрузка процессора на sqlserver2012
ответ
Нет немедленного решения. Вам нужно будет найти запросы, которые вызывают высокий уровень ЦП и их тонкую настройку.
Ниже DMV, дает запросы, которые потребляют больше CPU
SELECT TOP 50 qs.creation_time, qs.execution_count, qs.total_worker_time as total_cpu_time, qs.max_worker_time as max_cpu_time,
qs.total_elapsed_time, qs.max_elapsed_time, qs.total_logical_reads, qs.max_logical_reads, qs.total_physical_reads, qs.max_physical_reads,t.[text], qp.query_plan, t.dbid, t.objectid, t.encrypted, qs.plan_handle, qs.plan_generation_num FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS t CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qp
ORDER BY qs.total_worker_time DESC
дальше, вы говорите, число потоков является high.It может быть из-за параллельности, как well..so, вы можете должны найти, запросы, которые работают параллельно.
После их нахождения выясните причины их параллельного выполнения. В большинстве случаев это может быть из-за отсутствия индексов.
Этот запрос поможет вам в этом: Find Query Plans That May Utilize Parallelism
SELECT
p.*,
q.*,
cp.plan_handle
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) p
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) q
WHERE cp.cacheobjtype = 'Compiled Plan'
AND p.query_plan.value('declare namespace p="http://schemas.microsoft.com/sqlserver/2004/07/showplan";max(//p:RelOp/@Parallel)', 'float') > 0
Второй запрос был очень полезен, чтобы знать –
использовать следующую инструкцию, чтобы проверить, какая база данных используется наиболее CPU:
WITH DB_CPU_Stats
AS
(SELECT DatabaseID, DB_Name(DatabaseID) AS [Database Name], SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID]
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [CPU Rank],
[Database Name], [CPU_Time_Ms] AS [CPU Time (ms)],
CAST([CPU_Time_Ms] * 1.0/SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5,2)) AS [CPU Percent]
FROM DB_CPU_Stats
WHERE DatabaseID <> 32767 -- ResourceDB
ORDER BY [CPU Rank] OPTION (RECOMPILE);
Или это заявление, чтобы найти который SQL заявление используется большинство ЦП
SELECT TOP 50
[Avg. MultiCore/CPU time(sec)] = qs.total_worker_time/1000000/qs.execution_count,
[Total MultiCore/CPU time(sec)] = qs.total_worker_time/1000000,
[Avg. Elapsed Time(sec)] = qs.total_elapsed_time/1000000/qs.execution_count,
[Total Elapsed Time(sec)] = qs.total_elapsed_time/1000000,
qs.execution_count,
[Avg. I/O] = (total_logical_reads + total_logical_writes)/qs.execution_count,
[Total I/O] = total_logical_reads + total_logical_writes,
Query = SUBSTRING(qt.[text], (qs.statement_start_offset/2) + 1,
(
(
CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.[text])
ELSE qs.statement_end_offset
END - qs.statement_start_offset
)/2
) + 1
),
Batch = qt.[text],
[DB] = DB_NAME(qt.[dbid]),
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
where qs.execution_count > 5 --more than 5 occurences
ORDER BY [Total MultiCore/CPU time(sec)] DESC
2-я заявка была найдена здесь: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/33c7521f-7ed4-4574-82dd-aeb2f32111c5/find-high-cpu-query?forum=sqldatabaseengine
- 1. Высокая загрузка процессора - cloudservice.exe
- 2. Высокая загрузка процессора Mediawiki
- 3. C++ высокая загрузка процессора
- 4. Scrapy высокая загрузка процессора
- 5. Аудит logout - высокая загрузка процессора
- 6. Высокая загрузка процессора простой программой
- 7. TActionlist, OnUpdate, высокая загрузка процессора?
- 8. Mysql высокая загрузка процессора (100%)
- 9. Врезка резьбы, высокая загрузка процессора
- 10. Quartz.Net ZeroSizeThreadPool высокая загрузка процессора
- 11. DispatcherTimer и высокая загрузка процессора
- 12. Высокая загрузка процессора на ORMLite запрос
- 13. Высокая загрузка процессора на основе php-процессов
- 14. Визуальная и высокая загрузка процессора, это тяжелый?
- 15. Elasticsearch: высокая загрузка процессора Lucene Merge Thread
- 16. Высокая загрузка процессора с помощью WebGL?
- 17. Что такое высокая загрузка процессора (из MySQL)?
- 18. Анимированный фон во флеше - высокая загрузка процессора
- 19. Высокая загрузка процессора для приложения Flex
- 20. Высокая загрузка нагрузки процессора UIView redraw (iOS)
- 21. высокая загрузка процессора после JavaScript setInterval
- 22. Чрезвычайно высокая загрузка процессора в цикле визуализации
- 23. Высокая загрузка процессора при использовании MQTT deamon ..!
- 24. Android высокая загрузка процессора с обработчиком()
- 25. Высокая загрузка процессора в процессе дочернего процесса
- 26. Высокая загрузка процессора при чтении из консоли
- 27. SOLR высокая загрузка процессора в amazon linux
- 28. Eclipse: высокая загрузка процессора при построении проекта
- 29. Memcached slow gets, высокая загрузка процессора
- 30. asp.net web-service высокая загрузка процессора
что сделали до сих пор? вы посмотрели на ожидания? это, возможно, хорошее начало https://mssqlwiki.com/2012/10/04/troubleshooting-sql-server-high-cpu-usage/ –
Щелкните правой кнопкой мыши по базе данных и просмотрите различные доступные отчеты. Некоторые из них весьма полезны для определения «тяжелых» взглядов и процедур. –