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

Откуда:
Сообщений: 329
Временами запускаю "тяжелые" запросы, которые при загруженном сервере усугубляют ситуацию.
Как с помощью T-SQL определить степень загруженности сервера: длина очереди, загрузка CPU, загрузка IO...
с целью недопущения запуска "тяжелого" запроса
30 мар 16, 11:20    [18994718]     Ответить | Цитировать Сообщить модератору
 Re: Определить загруженность сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
sys.dm_os_performance_counters
Returns a row per performance counter maintained by the server.

=Сергей=
с целью недопущения запуска "тяжелого" запроса

Запрос лучше перепишите. Или назначьте ему лимит использования ресурсов. Или разделите базу по разным серверов в зависимости о типа решаемых задач.
30 мар 16, 11:27    [18994753]     Ответить | Цитировать Сообщить модератору
 Re: Определить загруженность сервера  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Glory
sys.dm_os_performance_counters

за это спасибо!!!

Glory
Запрос лучше перепишите

запрос просто агрегирует порцию данных и складывает результаты во временную таблицу, судя по плану исполнения, он оптимален

Glory
Или назначьте ему лимит использования ресурсов

А можно подробнее, как это сделать? MSSQL 2005
30 мар 16, 11:57    [18994989]     Ответить | Цитировать Сообщить модератору
 Re: Определить загруженность сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
запрос просто агрегирует порцию данных и складывает результаты во временную таблицу, судя по плану исполнения, он оптимален

Оптимальный/качественный запрос - это такой запрос, который удовлетворяет потребности.
Если потребность в создаваемой нагрузке не удовлетворена, то это не оптимальный запрос.

=Сергей=
А можно подробнее, как это сделать? MSSQL 2005

Версию надо публиковать в первом сообщении
30 мар 16, 12:04    [18995030]     Ответить | Цитировать Сообщить модератору
 Re: Определить загруженность сервера  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Glory,

согласен
в общем случае знание текущей нагрузки не спасет
сейчас свободно, а в следующий момент навалятся все...

может большую логику на более легкие этапы разбить...
30 мар 16, 12:05    [18995038]     Ответить | Цитировать Сообщить модератору
 Re: Определить загруженность сервера  [new]
o-o
Guest
=Сергей=
Glory
Или назначьте ему лимит использования ресурсов

А можно подробнее, как это сделать? MSSQL 2005

upgrade to >= 2008
Managing SQL Server Workloads with Resource Governor
30 мар 16, 12:05    [18995039]     Ответить | Цитировать Сообщить модератору
 Re: Определить загруженность сервера  [new]
Alexander Us
Member

Откуда:
Сообщений: 1133
=Сергей=,

доп. опция к сказанному выше.
список сейчас исполняемых запрсов с метриками


	SELECT 	
	 req.command command_type
	,sqltext.TEXT command_text
	, SUBSTRING(sqltext.text, (req.statement_start_offset/2)+1, 
        ((CASE req.statement_end_offset
          WHEN -1 THEN DATALENGTH(sqltext.text)
         ELSE req.statement_end_offset
         END - req.statement_start_offset)/2) + 1) AS statement_text
	,db_name(req.database_id) db_name
	,req.session_id
	,req.blocking_session_id
	,req.status as req_status
	,req.cpu_time req_cpu_time_ms
	,ses.cpu_time ses_cpu_time_ms
	,datediff(ms,req.start_time,getdate()) / 1000.0 elapsed_sec
	--,req.total_elapsed_time / 1000.0 req_elapsed_sec
	,ses.original_login_name
	,ses.host_name
	,ses.program_name
	,ses.host_process_id
	,ses.client_interface_name
	,ses.memory_usage
	--,ses.last_request_start_time
	--,ses.last_request_end_time
	,ses.reads
	,ses.writes
	,ses.logical_reads
	,ses.row_count
	,req.percent_complete
	,req.[sql_handle]
	,p.query_plan
	FROM 
		 sys.dm_exec_requests req with(nolock)
	JOIN sys.dm_exec_sessions ses with(nolock) on req.session_id=ses.session_id
	CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 
	CROSS APPLY	sys.dm_exec_query_plan(req.plan_handle) AS p 	
	where 1=1
    --and req.database_id > 4
	and req.session_id <> @@SPID
	order by 
	--req.total_elapsed_time desc
	--req.cpu_time desc
	elapsed_sec desc
	
4 апр 16, 12:25    [19013845]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить