Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кто сейчас кушает ресурсов больше всего  [new]
СамыйТяжелый
Guest
Доброго дня, сКульные!
нашел на вашем замечательном форуме вот такой запрос
set transaction isolation level read uncommitted
select 
	top 100
	creation_time,
	last_execution_time,
	execution_count,
	total_worker_time/1000 as CPU,
	convert(money, (total_worker_time))/(execution_count*1000)as [AvgCPUTime],
	qs.total_elapsed_time/1000 as TotDuration,
	convert(money, (qs.total_elapsed_time))/(execution_count*1000)as [AvgDur],
	total_logical_reads as [Reads],
	total_logical_writes as [Writes],
	total_logical_reads+total_logical_writes as [AggIO],
	convert(money, (total_logical_reads+total_logical_writes)/(execution_count + 0.0))as [AvgIO],
	case 
		when sql_handle IS NULL then ' '
		else(substring(st.text,(qs.statement_start_offset+2)/2,(
			case
				when qs.statement_end_offset =-1 then len(convert(nvarchar(MAX),st.text))*2      
				else qs.statement_end_offset    
			end - qs.statement_start_offset)/2  ))
	end as query_text,
	db_name(st.dbid)as database_name,
	object_schema_name(st.objectid, st.dbid)+'.'+object_name(st.objectid, st.dbid) as object_name
from sys.dm_exec_query_stats  qs
cross apply sys.dm_exec_sql_text(sql_handle) st
where total_logical_reads > 0
order by AvgDur desc

Подскажите плиз как в него вставить spid? если это возомжно.
Мне необходимо получить кто в данный момент кушает больше всех ресурсов.
Спасибо за уделенное время.
3 май 12, 17:30    [12503229]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Это статистика по запросам, которые как бы могут несколько spid'ов запускать.
3 май 12, 17:33    [12503251]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
СамыйТяжелый
Guest
Гавриленко Сергей Алексеевич
Это статистика по запросам, которые как бы могут несколько spid'ов запускать.

Печально :'( А не подскажите на какие системные въю/функции смотреть что бы узнать кто на сервере самый плохой?
3 май 12, 17:38    [12503284]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Alex5555555555
Member

Откуда:
Сообщений: 114
sp_who2;
3 май 12, 18:06    [12503447]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
В sys.sysprocesses есть поля CPU, mem_usage, physical_io.
3 май 12, 18:10    [12503466]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
komrad
Member

Откуда:
Сообщений: 5735
СамыйТяжелый,

попробуй sp_whocpu
3 май 12, 19:33    [12503855]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
СамыйТяжелый
Guest
Кот Матроскин
В sys.sysprocesses есть поля CPU, mem_usage, physical_io.

Спасибо, то что доктор прописал.
Alex5555555555
sp_who2;

Тоже спасибо, но вариант от Кота Матроскина более гибкий.
3 май 12, 21:50    [12504490]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Glory
Member

Откуда:
Сообщений: 104751
СамыйТяжелый
Спасибо, то что доктор прописал.

Вот только значения в sys.sysprocesses не текущие, а кумулятивные.
3 май 12, 21:58    [12504538]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
СамыйТяжелый,
The best sp ever for monitoring current activity: sp_WhoIsActive

Can be downloaded here:
http://sqlblog.com/files/folders/beta/entry42453.aspx
3 май 12, 23:09    [12504783]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Glory
Вот только значения в sys.sysprocesses не текущие, а кумулятивные.


А как счетчик использования CPU или IO может быть "текущим"? "Cколько тактов процессора потребляет процесс в течение одного конкретного такта?" :)

Очевидно что этм счетчики имеют смысл только в смысле "ресурсы, потраченные в течение некоей delta" - и на этот вопрос легко получить ответ, используя sysprocesses.
4 май 12, 10:41    [12506113]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кот Матроскин
А как счетчик использования CPU или IO может быть "текущим"? "Cколько тактов процессора потребляет процесс в течение одного конкретного такта?" :)

Очевидно что этм счетчики имеют смысл только в смысле "ресурсы, потраченные в течение некоей delta" - и на этот вопрос легко получить ответ, используя sysprocesses.

Читайте вопрос ТС-а
"Кто сейчас кушает ресурсов больше всего"
4 май 12, 10:46    [12506144]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Glory,

Если "сейчас" понимать как "в конкретный квант времени" - то, повторюсь, ответа на этот вопрос нет и быть не может в принципе. Это имхо достаточно надежный критерий того, что так вопрос понимать не надо.
Если "сейчас" понимать как "в течение следующего промежутка времени длиной N" - то отчет на этот вопрос прекрасно получается при помощи sysprocesses.
4 май 12, 10:58    [12506252]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
СамыйТяжелый
Guest
Glory, Кот Матроскин, ребят не ссортись плиз. Все мы занимаемся одим благим делом.
Картинка с другого сайта.
Есть такая прога SQL HearBeat показывает коннекты в графическом виде (шариками), чем больше шарик тем больше он сожрал ресурсов. Красным кружком вокруг я так понимаю это кол во заблокированных ресурсов. Стрелочками показаны блокировки. Если происходит deadlock то шарики становятся красными и внутри. Цифры это spid.
profile показал что для рисования такой картины прога использует вот такой вот запрос
SELECT	spid, kpid, blocked, CAST(waittime AS BIGINT) as waittime, lastwaittype, waitresource, dbid, uid, 
		CAST(cpu / 1000 AS BIGINT) as cpu, CAST(physical_io AS BIGINT) as physical_io, memusage, login_time , 
		last_batch , ecid , CAST(open_tran AS BIGINT) as open_tran, status, hostname, program_name, hostprocess, 
		cmd, nt_domain, nt_username, net_address, net_library, loginame, stmt_start, stmt_end 
FROM master.dbo.sysprocesses where hostprocess <> '' AND program_name <> 'Lakeside.SqlTools.DeadlockDetector'

Вот я и хотел создать приложение или скрипт который бы показывал, например TOP 10 самых тяжелых (больших) шариков. Грубо говоря по какой колонки сортировать? С локами я разобрался, осталось сделать нагрузку.

С уважением. И спасибо за потраченное время.
4 май 12, 11:41    [12506577]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
СамыйТяжелый
Грубо говоря по какой колонки сортировать?
Какая электростанция кушает больше всех ресурсов, угольная, газовая или атомная?
Вот Ваш вопрос такой же бессмысленный. Сами решайте по какому одному ресурсу определять тяжелость запроса. 

Ну и как уже сказали cpu и physical_io кумулятивные. Сначаля считайте дельту, скажем, за 5 сек, а потом уже сортируйте полученный результат. С memusage так делать не нужно.
4 май 12, 20:37    [12510640]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
Кот Матроскин
Glory,

Если "сейчас" понимать как "в конкретный квант времени" - то, повторюсь, ответа на этот вопрос нет и быть не может в принципе. Это имхо достаточно надежный критерий того, что так вопрос понимать не надо.
Если "сейчас" понимать как "в течение следующего промежутка времени длиной N" - то отчет на этот вопрос прекрасно получается при помощи sysprocesses.
Неправильно.

В sysprocesses самый нагружающий процесс может быть с самыми маленькими значениями счётчиков, это же очевидно.

"сейчас" подразумевается за некий период измерения, например, за секунду, а кумулятивные счётчики в sysprocesses накапливают данные с момента создания коннекта, допустим, за сутки или за год.
Кот Матроскин
Очевидно что этм счетчики имеют смысл только в смысле "ресурсы, потраченные в течение некоей delta" - и на этот вопрос легко получить ответ, используя sysprocesses.
Вот как раз счётчиков за некую delta в sysprocesses и нету, о чём вам Glory и сказал.
4 май 12, 21:00    [12510713]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
alexeyvg,

Что "неправильно"? С помощью sysobjects нельзя посчитать потребляемые ресeрсы CPU за дельту? Читайте внимательнее, что именно я написал.
Есть некоторые проблемы с процессами, которые возникли/перестали существовать в течение дельты, но в рамках вопроса "кто же жрет сейчас все ресурсы в системе?" эти процессы не очень-то интересны в любом случае.
5 май 12, 10:39    [12511977]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
поправка
"sysobjects" - имелось в виду "sysprocesses", конечно
5 май 12, 10:42    [12511993]     Ответить | Цитировать Сообщить модератору
 Re: Кто сейчас кушает ресурсов больше всего  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
Кот Матроскин
alexeyvg,

Что "неправильно"? С помощью sysobjects нельзя посчитать потребляемые ресeрсы CPU за дельту? Читайте внимательнее, что именно я написал.
А, ну да, извиняюсь, невнимательно прочитал. Конечно, если сохранять предыдущие значения и правильно сопостовлять процессы (не только по spid, но и по времени создания), то можно.
5 май 12, 11:16    [12512224]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить