Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разница sys.sysprocesses и sys.dm_exec_sessions  [new]
бур-бур
Guest
Друзья,
объясните мне пож-та, почему такая разница -

select sum(cpu) from master.sys.sysprocesses
select sum(cpu_time) from sys.dm_exec_sessions


Результат:
29 396 597 (sysprocesses)
4 714 131 (dm_exec_sessions)

При этом
select count(cpu) from master.sys.sysprocesses

Равно

Не понимаю, хотя вроде бы BOL:
"Динамические административные представления sys.dm_exec_connections, sys.dm_exec_sessions и sys.dm_exec_requests сопоставляются системной таблице sys.sysprocesses."
9 апр 12, 10:57    [12386181]     Ответить | Цитировать Сообщить модератору
 Re: Разница sys.sysprocesses и sys.dm_exec_sessions  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
бур-бур
Друзья,
объясните мне пож-та, почему такая разница -

select sum(cpu) from master.sys.sysprocesses
select sum(cpu_time) from sys.dm_exec_sessions



а так:

select sum(cpu) from master.sys.sysprocesses

select sum(cpu_time)
from
(
select cpu_time from sys.dm_exec_requests
union all
select cpu_time from sys.dm_exec_sessions
) t
9 апр 12, 11:09    [12386274]     Ответить | Цитировать Сообщить модератору
 Re: Разница sys.sysprocesses и sys.dm_exec_sessions  [new]
бур-бур
Guest
Knyazev Alexey,

Не, все равно разница стабильно - 600-500 тыс. мс.
9 апр 12, 11:15    [12386313]     Ответить | Цитировать Сообщить модератору
 Re: Разница sys.sysprocesses и sys.dm_exec_sessions  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
бур-бур
Knyazev Alexey,

Не, все равно разница стабильно - 600-500 тыс. мс.


так вы все-равно не получите одинаковый результат, т.к. процессорное время продолжает отъедаться

вы запросы местами поменяйте и у вас первый будет все время выводить меньше значение

и ещё sys.dm_exec_requests не показывает неактивные транзакции
9 апр 12, 11:22    [12386357]     Ответить | Цитировать Сообщить модератору
 Re: Разница sys.sysprocesses и sys.dm_exec_sessions  [new]
бур-бур
Guest
Knyazev Alexey,
конечно продолжает - не спорю.
но разница в 500.000 мс = 500 сек. между двумя выполненными запросами - не кажется вам странной?
9 апр 12, 11:24    [12386380]     Ответить | Цитировать Сообщить модератору
 Re: Разница sys.sysprocesses и sys.dm_exec_sessions  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
бур-бур
Друзья,
объясните мне пож-та, почему такая разница -

select sum(cpu) from master.sys.sysprocesses
select sum(cpu_time) from sys.dm_exec_sessions


Результат:
29 396 597 (sysprocesses)
4 714 131 (dm_exec_sessions)

При этом
select count(cpu) from master.sys.sysprocesses

Равно

Не понимаю, хотя вроде бы BOL:
"Динамические административные представления sys.dm_exec_connections, sys.dm_exec_sessions и sys.dm_exec_requests сопоставляются системной таблице sys.sysprocesses."

Вы сравниваете теплое с мягким.
master.sys.sysprocesses показывает текущую информацию по выполняющимся процессам в то время как sys.dm_exec_sessions, это открытые сессии, и инфа по cpu, io и прочему обновляется только после завершения батча. Поэтому если в этой сессии батч еще выполняется, то текущая информация будет недоступна. 
В теории прибавив cpu из sys.dm_exec_requests мы должны получить то же самое что и в sys.sysprocesses, но sys.dm_exec_requests нагло врет если запрос выполняется более чем на 1м CPU. Это представление покажет нагрузку только по одному, управляющему потоку и обычно это очень небольшая величина по сравнению с реально затраченным процессорным временем.

Насколько я знаю, нет нормальных способов узнать текущее потребление cpu выполняющимися процессами. Единственный вариант, это в момент выполнения считать дельту по kernel_time+usermode_time вытащенную из представлений sys.dm_os_threads, sys.dm_os_workers, но точных запросов я не скажу, можете посмотреть как это делается в sp_WhoIsActive
9 апр 12, 22:13    [12390557]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить