Проблемы с производительностью - параллелизм - SQL Server - PullRequest
0 голосов
/ 20 июля 2011

Задание агента SQL никогда не заканчивается.

Сервер: 2,4 Гц, 24 процессора, 256 ГБ ОЗУ, Windows 2008 Server, SQL 2008

Согласно монитору активности:% ProcessTime равен 100%

С SP_, который найден ниже:

SPID    Status  DBName  Command CPUTime ProgramName SPID
141 SUSPENDED                       STL UPDATE  5429    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22362478    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21178290    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22590708    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21682298    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  20652239    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22315694    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22362120    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21867097    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22746381    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  20301456    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22236445    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  19998611    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21139087    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22628117    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21512351    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21354649    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  20256823    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21185138    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21272530    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  22084796    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  20745996    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21812185    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  21738442    .Net SqlClient Data Provider    141
141 RUNNABLE                        STL UPDATE  20895694    .Net SqlClient Data Provider    141

В соответствии с 24 процессами запрос был разбит на 24 параллельных потока.

Настройки порога стоимости для параллелизма - 30, а максимальная степень параллелизма - 0 (по умолчанию).

Невозможно увидеть, что происходит в Профилировщике, и весь поток выше ожидает ЦП.

Как узнать, что делает SQL Server и что удерживает процессор?

1 Ответ

0 голосов
/ 20 июля 2011

Я бы начал с просмотра ожидающих задач dmv, чтобы увидеть типы ресурсов, которые ожидает запрос. Также план запроса, используемый текущим оператором выполнения.

SELECT      *
FROM        sys.dm_os_waiting_tasks
WHERE       session_id = 141

SELECT      q.query_plan,
            r.*
FROM        sys.dm_exec_requests                    r
CROSS APPLY sys.dm_exec_query_plan(r.plan_handle)   q
WHERE       session_id = 141
...