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

Откуда: Київ
Сообщений: 10428
Я создаю таблицы в процедуре, есть ли смысл ставить такой хинт для улучшения производительности?
17 июн 09, 14:39    [7310632]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
Winnipuh
Я создаю таблицы в процедуре, есть ли смысл ставить такой хинт для улучшения производительности?

Нет, лучше прыгать во время выполнения запроса - время летит быстрее :-) А with(nolock) для времянок, которыми пользуешься только ты, - пустая трата букв.
17 июн 09, 17:40    [7312109]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Paranoik
Member

Откуда:
Сообщений: 170
Сид
[quot Winnipuh]...для времянок, которыми пользуешься только ты...

Обоснуете? Хотите сказать, что их всегда можно избежать на благо производительности?
17 июн 09, 17:52    [7312201]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Glory
Member

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

Только косвенно. Т.к. может уменьшить количество системной информации о блокировках и избежать их эсколации. Если разумеется у вас так много блокировок временной таблицы, что происходит их эсколация
17 июн 09, 18:01    [7312270]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
никогда на эту тему не задумывался... но на практике 2ой вариант с nolock на 50мс быстрее стабильно...

set nocount on
begin tran
create table #t (i int)
declare @i int
set @i = 0
while @i < 100000 begin
set @i = @i + 1
insert into #t values (1)
end

declare @d datetime, @j int, @a int
select @d = getdate(), @j = 0, @a = 0
while @j < 100 begin
 set @j = @j + 1
 select top 1 @a = @a + i from #t order by newid()
end
print datediff(ms, @d, getdate())

select @d = getdate(), @j = 0, @a = 0
while @j < 100 begin
 set @j = @j + 1
 select top 1 @a = @a + i from #t (nolock) order by newid()
end
print datediff(ms, @d, getdate())
так что вообще возможно что и актуально, чтобы серверу изначально говорить, не проверяй блокировки...

для спящего время бодрствования равносильно сну
17 июн 09, 18:04    [7312290]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
Алексей2003
... но на практике 2ой вариант с nolock на 50мс быстрее стабильно...

а у меня наоборот, чаще первый запрос быстрее
17 июн 09, 18:13    [7312349]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Сергей Мишин
а между приложениями переключаетесь в момент выполнения? а то я заметил эту "особенность"

для спящего время бодрствования равносильно сну
17 июн 09, 18:15    [7312357]     Ответить | Цитировать Сообщить модератору
 Re: есть ли смысл использовать with(nolock) на # таблицах?  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
Under the covers, the nolock call probably doesn't call WaitForSingleObject. While WaitForSingleObject would be a fast call when there is no wait, it is overhead and would explain the small difference
17 июн 09, 18:30    [7312418]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить