Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Подскажите, что такое в сообщениях

Время работы SQL Server:
Время ЦП = 827 мс, затраченное время = 10701 мс.


"затраченное время" ?
10 сен 13, 16:58    [14821493]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
defragmentator,
затраченное - суммарное время на выполнение запроса
10 сен 13, 17:06    [14821570]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Shakill
defragmentator,
затраченное - суммарное время на выполнение запроса

Что такое "суммарное время на выполнение запроса" ?
10 сен 13, 17:13    [14821632]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
defragmentator
"затраченное время" ?

Время выполнения запроса. То, что можно увидеть в строке состояния SSMS после выполнения запроса, только в миллисекундах.
10 сен 13, 17:16    [14821661]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
defragmentator
Shakill
defragmentator,
затраченное - суммарное время на выполнение запроса

Что такое "суммарное время на выполнение запроса" ?
время, прошедшее от момента начала выполнения запроса до момента завершения. очевидно же
10 сен 13, 17:16    [14821663]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Причём "Время ЦП" может быть как меньше "затраченного времени", так и больше.
Больше иногда бывает в случае распараллеленных запросов, т.к. "Время ЦП" — это суммарное время по всем процессорам, задействованным в выполнении запроса.
10 сен 13, 17:19    [14821681]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Гость333,

то есть в случае одного процесора суммарное время = время ЦП + время пересылки данных к серверу и обратно?
10 сен 13, 17:22    [14821702]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
defragmentator,
и плюс время на операции ввода-вывода. чтение и запись на диск могут отнять много времени
10 сен 13, 17:26    [14821725]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Ещё — плюс время, в течение которого запрос висел в ожидании блокировок.
10 сен 13, 17:32    [14821771]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
На время ЦП можно ориентироваться как на время выполнения запроса для сравнения эффективности двух вариантов запроса или лучше сравнивать в плане запроса в %?
10 сен 13, 17:37    [14821803]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
zxc1257
Member

Откуда:
Сообщений: 71
defragmentator,

на затраченное
10 сен 13, 17:39    [14821814]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74928
defragmentator
На время ЦП можно ориентироваться как на время выполнения запроса для сравнения эффективности двух вариантов запроса или лучше сравнивать в плане запроса в %?


Нет. Ориентироваться надо на связку план + STATISTICS TIME + STATISTICS IO.
10 сен 13, 17:40    [14821817]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
zxc1257
defragmentator,

на затраченное


Не уверен. Это время обмена клиента с сервером, в основном.
А если запрос идёт в пакете, то такого обмена нет.
10 сен 13, 17:41    [14821819]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
pkarklin
defragmentator
На время ЦП можно ориентироваться как на время выполнения запроса для сравнения эффективности двух вариантов запроса или лучше сравнивать в плане запроса в %?


Нет. Ориентироваться надо на связку план + STATISTICS TIME + STATISTICS IO.


Если план чуть быстрее, а STATISTICS TIME (время ЦП) чуть медленнее, то что выбрать?
10 сен 13, 17:42    [14821828]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
defragmentator
На время ЦП можно ориентироваться как на время выполнения запроса для сравнения эффективности двух вариантов запроса или лучше сравнивать в плане запроса в %?

а какой критерий вы выбрали в качестве оценки эффективности? максимум скорости или минимум ресурсов или какие-то смешанные варианты?
10 сен 13, 17:44    [14821844]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
zxc1257
Member

Откуда:
Сообщений: 71
defragmentator
zxc1257
defragmentator,

на затраченное


Не уверен. Это время обмена клиента с сервером, в основном.
А если запрос идёт в пакете, то такого обмена нет.


правильно, i/o, wait, ... можно пренебречь. копейки.
10 сен 13, 17:45    [14821849]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74928
defragmentator
Если план чуть быстрее, а STATISTICS TIME (время ЦП) чуть медленнее, то что выбрать?


Приведите, уже, реальные планы и озвученные выше набор статистик.
10 сен 13, 17:45    [14821853]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
pkarklin,

да ладно, я для себя уже выбрал лучший вариант, просто хочу на будущее знать.
Если что, приведу вариант, а пока вопрос можно считать решённым.
10 сен 13, 17:51    [14821881]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
defragmentator
план чуть быстрее

Что вы здесь имеете в виду? У плана меньше стоимость (Estimated Cost)?
Эта стоимость измеряется в "условных попугаях". Подробнее можно прочесть, например, с этого сообщения 14136542 и до конца темы.
То есть это стоимость запроса на некоей условной "эталонной конфигурации", а реальные конфигурации могут сильно отличаться от этого эталона.
10 сен 13, 17:57    [14821908]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
+забыл дописать

Поэтому лучше ориентироваться на реальную статистику (TIME + IO) выполнения запросов.
10 сен 13, 17:58    [14821916]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Гость333,
смотрю Actual Plan
10 сен 13, 18:00    [14821931]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
Поэтому лучше ориентироваться на реальную статистику (TIME + IO) выполнения запросов.

А, извиняюсь, просмотрел этот пост:
pkarklin
Ориентироваться надо на связку план + STATISTICS TIME + STATISTICS IO.

Да, конечно, и план тоже надо учитывать.
10 сен 13, 18:02    [14821939]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
Гость333
Member

Откуда:
Сообщений: 3683
defragmentator
смотрю Actual Plan

А по каким показателям из Actual Plan вы определяете, что "план чуть быстрее"?
10 сен 13, 18:05    [14821952]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Интересно, что сам по себе мониторинг статистики тоже может влиять на время.
Год назад читал статью How to Make Scalar UDFs Run Faster (SQL Spackle)
Там был результат измерения времени выполнения запроса со скалярной функций при помощи двух методов:
1) set statistics time
2) datediff
Результаты в статье такие:
statistics time
SQL Server Execution Times:
CPU time = 109031 ms, elapsed time = 299436 ms.

datediff
7456


И я тогда отписался там в комментах:
SomewhereSomehow
Jeff Moden,
Wonderful note about set statistics time! Never heard of it!

Т.е. скорее всего у меня получилось воспроизвести такой результат (хотя может я поверил "наслово" - но я такое редко от себя могу ожидать=)).
Сейчас пытаюсь проиграть конкретно те примеры из статьи - не получается такой драматической разницы во времени выполнения.
Пробовал на голом 2008r2 rtm, 2008r2 sp2, 2012 sp1.

Однако, небольшая, но разница все же есть:
+
use tempdb;
set nocount on;
select top(1000000) identity(int,1,1) as a into t1 from master..spt_values v1,master..spt_values v2,master..spt_values v3;
go
create function dbo.f1(@a int)
returns int with schemabinding
as begin
	return @a*2;
end
go
declare @r int;
set statistics time on;
select @r = dbo.f1(a) from t1;
set statistics time off;
go
print('-------------------------------------')
go
declare @d datetime = getdate();
declare @r int;
select @r = dbo.f1(a) from t1;
print('Elapsed time:'+ convert(varchar(100),datediff(ms,@d,getdate())));
go
drop table t1;
drop function f1;

автор
SQL Server Execution Times:
CPU time = 1934 ms, elapsed time = 2436 ms.
-------------------------------------
Elapsed time:1940

Т.е. само по себе измерение статистики - тоже может влиять на время =)
+
- Никому нельзя доверять! Даже себе самому! - возмущался мужик,
намыливая штаны. - Я ведь только пукнуть хотел...


У кого получится воспроизвести тайминги из статьи - просьба поделиться секретом.
10 сен 13, 20:03    [14822369]     Ответить | Цитировать Сообщить модератору
 Re: SET STATISTICS TIME ON  [new]
zxc1257
Member

Откуда:
Сообщений: 71
с увеличением числа строк растет разрыв. на 10 000 000 разрыв около 10 сек.
10 сен 13, 20:38    [14822525]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить