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

Откуда:
Сообщений: 979
Добрый день!
После 2-х летнего перерыва возвращаюсь назад в MSSQL (чему ни сказано рад ) .
Есть такой теоретический вопрос - на базе установлен параметр READ_COMMITTED_SNAPSHOT в ON. Это позволяет уменьшить количество блокировок и взаимоблокировок (работа с версиями строк), но подгружает порой базу (TempDb), время запросов увеличивается (а запросов от одного юзера может быть до 1000 в минуту). Как мне видится сущности по которым идет запрос модифицируются достаточно редко и можно сказать на момент выборки идет практически монопольная работа юзера.
Это наводит на мысли в select - ах использовать грязное чтение nolock. Прав ли я, что это снизит нагрузку на базу и TempDb будет меньше юзаться, то есть будет выигрыш в производительности на сервере?
Я понимаю, что вопрос теоретический, но все же наверняка вы сталкивались и у вас есть ответы, надеюсь и желание их дать.
Спасибо!
18 мар 14, 17:17    [15747567]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Включать RCSI, а потом использовать грязное чтение? O_o
Мсье знает толк в извращениях.

З.Ы. Я вообще не уверен, что nolock при rcsi тупо не будет проигнорирован.
18 мар 14, 17:25    [15747629]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
При включенном RCSI сервер пишет в TempDB только старые версии изменяемых данных. Соответственно, если ничего не меняется, то ничего и не пишется. Так что вы для начала убедитесь, что воюете с правильной мельницей - ну там, посмотрите через Resource Monitor количество чтений/записи к файлам tempdb, допустим.

Если, конечно, вы не путаете RCSI и Snapshot isolation level - ибо последний действительно будет писать по любому чиху.
18 мар 14, 17:38    [15747725]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
medoed
Member

Откуда:
Сообщений: 979
Ennor Tiegael
При включенном RCSI сервер пишет в TempDB только старые версии изменяемых данных. Соответственно, если ничего не меняется, то ничего и не пишется. Так что вы для начала убедитесь, что воюете с правильной мельницей - ну там, посмотрите через Resource Monitor количество чтений/записи к файлам tempdb, допустим.

Если, конечно, вы не путаете RCSI и Snapshot isolation level - ибо последний действительно будет писать по любому чиху.

Спасибо, гляну!
18 мар 14, 17:42    [15747764]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
смысл есть, конечно же, все верно
уместность / ограничения / подводные камни писать не буду, а то кепом обзовут
просто "обычно" профита не так, чтобы много / заметно. зато когда серверу "плохеет" - разница более очевидна
18 мар 14, 18:17    [15747984]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
medoed
Гавриленко Сергей Алексеевич
З.Ы. Я вообще не уверен, что nolock при rcsi тупо не будет проигнорирован.
Ну вы не уверены, а тролите. С вашим опытом и регалиями надобно уже знать, а не сомневаться, не зачет!
Умный выйдет из любой ситуации, а мудрый в нее не попадет! ©

Так что не знать чего-то явно, не обязательно говорит о плохом знании.

Ennor Tiegael
Если, конечно, вы не путаете RCSI и Snapshot isolation level - ибо последний действительно будет писать по любому чиху.
Чего чего?
Я то думал что отличие лишь в глубине поиска нужной версии строки.
19 мар 14, 01:23    [15750071]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Ennor Tiegael
Member

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

Действительно, ошибся - snapshot пишет столько же, сколько и RCSI. Но версии хранятся дольше, места в tempdb надо больше, и соответственно, чтобы все эти версии прочитать, нужно сделать больше ридов, как минимум.
19 мар 14, 01:48    [15750126]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Ennor Tiegael
Но версии хранятся дольше, места в tempdb надо больше
В условных единицах.

15405924 - пока застрял в этом. И нет вразумительных тестов по производительности для сопоставления подходов, и нет внятных ответов.
19 мар 14, 05:05    [15750250]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
medoed
Member

Откуда:
Сообщений: 979
Mnior
medoed
пропущено...
Ну вы не уверены, а тролите. С вашим опытом и регалиями надобно уже знать, а не сомневаться, не зачет!
Умный выйдет из любой ситуации, а мудрый в нее не попадет! ©
Так что не знать чего-то явно, не обязательно говорит о плохом знании.

Дык я про то, что не стоит ярлыки на человека вешать!. Можешь помочь - помоги, не можешь - проходи мимо. Тем более модератору уж не стоило так гнобить спрашивающего

А по существу, начальник посмотрел через системный монитор на уровне железа сервака - TEMPDB не сильно грузится.
Я пока обнаружил, что куча одинаковых запросов, аж 200 кратное задвоение и статистика раз в неделю собирается, думаю каждую ночь собирать статистику, пока юзверы не работают.
Всем спасибо за живое обсуждение
19 мар 14, 10:32    [15750988]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8833
Если
автор
на момент выборки идет практически монопольная работа юзера
, то почему Вы боитесь блокировок или "грязных" чтений?
19 мар 14, 13:08    [15752172]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
medoed
Member

Откуда:
Сообщений: 979
Владислав Колосов
Если
автор
на момент выборки идет практически монопольная работа юзера
, то почему Вы боитесь блокировок или "грязных" чтений?

Уже не борюсь
Я рассчитывал, что нагрузка на TempDb снизится, так как сущности частично могут использоваться другими пользователями, хотя именно это действие выполняет как правило один пользователь! Но это уже не важно!
А то что я реально собираюсь делать, я описал выше.
Я так понимаю, все вопросы снялись и можно дальше ничего не обсуждать!
Спасибо!
19 мар 14, 15:17    [15753309]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
medoed
Я так понимаю, все вопросы снялись и можно дальше ничего не обсуждать!
Почему, зависит от того что вы тут отпишитесь по окончании "эксперимента".
19 мар 14, 16:38    [15754039]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
medoed
Member

Откуда:
Сообщений: 979
Mnior
medoed
Я так понимаю, все вопросы снялись и можно дальше ничего не обсуждать!
Почему, зависит от того что вы тут отпишитесь по окончании "эксперимента".

Ну, вы ждете замеры,тесты? Сорри, но у меня сейчас времени не особо тьма. Мне платят за решение проблемы. Проблема в лишних запросах (которые я уже накопал) и отсутствие актуальной статистики на индексах. Думается мне, что этого будет достаточно для того чтобы операция с клиентской части как и прежде отрабатывала за приемлимое время!
19 мар 14, 17:02    [15754248]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
o-o
Guest
Гавриленко Сергей Алексеевич
З.Ы. Я вообще не уверен, что nolock при rcsi тупо не будет проигнорирован.


а мне нежалко попробовать.
на базе включено RCSI.
в первом коннекте:
create table dbo.t (id int, col int);
insert into dbo.t (id, col)
values (1,1), (1,2), (1,3);

begin tran

update dbo.t
set col = 4 
where id = 1


во втором:
select *
from dbo.t with (nolock)
------
id	col
1	4
1	4
1	4

-------------------------
select *
from dbo.t --with (nolock)
Id	col
1	1
1	2
1	3


вывод: nolock не игнорируется
19 мар 14, 18:08    [15754694]     Ответить | Цитировать Сообщить модератору
 Re: READ_COMMITTED_SNAPSHOT AND Tempdb!?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Модератор: Заканчиваем меня обсуждать
19 мар 14, 18:45    [15754867]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить