Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Т.е. Вы хотите сказать, что те параллельно выполняющиеся пакетные insert'ы/update'ы выставляют какую-либо RS-S...RX-X блокировку и select ждет чтобы поставить свою Sch-S?

Все гораздо проще
"and concurrent DML operations that acquire Sch-M locks, cannot be performed on the table."
22 окт 15, 11:40    [18310766]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
o-o
Sch-S для того, чтобы конфликтовать со Sch-M.
ну т.е. пока вы читаете/обновляете, т.е. запускаете DML statements,
никто не может дропать колонки таблицы, с к-ой работаете, или подменять ее.
например, вы индексы онлайново перестраиваете.
для примера пускай мы кластерный онлайново ребилдим.
таблица доступна во время процесса,
но если вы ее ни на секунду не отпускаете, ваш онлайновый ребилд будет висеть и висеть.
потому что он уже все отребилдил, но ему надо "подменить" таблицу, нужен Sch-M,
поэтому он стоит в очереди и ждет, когда отвалится Sch-S

Но мой-то select всплывает уже во время выполнения insert'ов/update'в - значит именно он ждет, чтобы поставить Sch-S. Т.е. получается, что insert'ы/update'ы уже выставили Sch-M или RS-S...RX-X. Но зачем insert'ам/update'ам выставлять Sch-M? Да - они модифицируют индекса, не не перестраивают/ребилдят их же...
22 окт 15, 11:59    [18310948]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
o-o
Guest
кстати, в продолжение истории с онлайновым ребилдом.
те, кто пришел со своими блокировками, конфликтующими с теми, что есть,
но после начала ребилда, будут вместе с ребилдом ждать,
пока он свою ожидаемую блокировку получит, а потом уже и они смогут.
вот на инглише понятнее описано:
Randal
Myth 5: online index rebuild doesn't take any locks

This myth is untrue. The 'online' in 'online index operations' is a bit of a misnomer.
Online index operations need to take two very short-term table locks.
An S (Shared) table lock at the start of the operation to force all write plans that could touch the index to recompile,
and a SCH-M (Schema-Modification – think of it as an Exclusive) table lock at the end of operation
to force all read and write plans that could touch the index to recompile.

The most recent time this came up on the forums was someone
noticing insert queries timing out after an online index rebuild operation had just started.
The problem is that the table lock that online index rebuild needs has to be entered into the grant queue in the lock manager
until it can be acquired – and it will stay there until existing transactions that are holding conflicting locks either commit or roll-back.
Any transaction that requires a conflicting lock AFTER the index rebuild lock has been queued but not acquired (and then released)
will wait behind it in the lock grant queue. If the query timeout is reached before the transaction can get it's lock, it will timeout.


This is still much better than the table lock being held for the entire duration of the index rebuild operation.

Search Engine Q&A #19: Misconceptions around index rebuilds (allocation, BULK_LOGGED mode, locking)
22 окт 15, 12:01    [18310962]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Но мой-то select всплывает уже во время выполнения insert'ов/update'в - значит именно он ждет, чтобы поставить Sch-S. Т.е. получается, что insert'ы/update'ы уже выставили Sch-M или RS-S...RX-X. Но зачем insert'ам/update'ам выставлять Sch-M? Да - они модифицируют индекса, не не перестраивают/ребилдят их же...

Вы все это установили по "логу таймаутов" ?
22 окт 15, 12:02    [18310972]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
o-o
Guest
Ex_Soft
o-o
Sch-S для того, чтобы конфликтовать со Sch-M.
ну т.е. пока вы читаете/обновляете, т.е. запускаете DML statements,
никто не может дропать колонки таблицы, с к-ой работаете, или подменять ее.
например, вы индексы онлайново перестраиваете.
для примера пускай мы кластерный онлайново ребилдим.
таблица доступна во время процесса,
но если вы ее ни на секунду не отпускаете, ваш онлайновый ребилд будет висеть и висеть.
потому что он уже все отребилдил, но ему надо "подменить" таблицу, нужен Sch-M,
поэтому он стоит в очереди и ждет, когда отвалится Sch-S

Но мой-то select всплывает уже во время выполнения insert'ов/update'в - значит именно он ждет, чтобы поставить Sch-S.

почему?
ваши insert/update разве накладывают Sch-M?
с остальными Sch-S же не конфликтует
22 окт 15, 12:14    [18311033]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Вы все это установили по "логу таймаутов" ?

Нет. Повторюсь - я не басист. Я просто пытаюсь понять как это работает и пытаюсь в голове прокрутить возможную последовательность событий. Может я в чём-то ошибаюсь. Вот смотрите как это выглядит для меня:
в одной транзакции которая стартует первой происходит insert/update (выставляются необходимые, IMHO, для этого блокировки: Exclusive locks (X) или Key - Range locks (если там update ... where ... bitween... or ... like))
в другой транзакции которая стартует попозже происходит select которому необходим Sch-S и он конфликтует/недопустим с блокировкой, выставленной в первой транзакции (с X проблем нет, отсюда методом исключения остаются RS-S...RX-X) - по сему и ждем-с
Где я неправ?
22 окт 15, 12:21    [18311075]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
o-o
ваши insert/update разве накладывают Sch-M?
с остальными Sch-S же не конфликтует

вот и я ж о чем
22 окт 15, 12:22    [18311084]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Где я неправ?

Вы пытаетесь, тыкая пальцем в небо, угадать состояние сервера в какой то момент времени.
Потому что трассировка/мониторинг для вас - это слишком затратно.
При этом вы почему считаете, что ничего, кроме этих "двух запросов", на сервере не происходит
22 окт 15, 12:26    [18311119]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
o-o
Guest
Ex_Soft
o-o
ваши insert/update разве накладывают Sch-M?
с остальными Sch-S же не конфликтует

вот и я ж о чем

так я и не вангую даже, что там у вас происходит.
вы спросили про Sch-S, чисто академический интерес, так?
все, что знаю, выше изложено.

Sch-S может ждать только, когда уйдет чей-то Sch-M.
а есть ли он у вас или нет, вы ж не мониторите.
а что еще может быть?
ну, у нас однажды BOBJ съел все ресурсы сервера,
все сидели и пялились в экраны по 10 минут на любой чих,
в том числе и чтобы получить select * from log_t_day (nolock), где в таблице лога 1000 записей.
по таймауту не отваливались, нет у нас таймаута, в студии выполнялось,
но ждали, да.
22 окт 15, 12:33    [18311159]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Вы пытаетесь, тыкая пальцем в небо, угадать состояние сервера в какой то момент времени.

Причём тут пальцем в небо и угадать? Я просто пытаюсь понять то, что расписано в мегабайтах страниц в инете Так, как раз, две транзакци, одна стартует раньше, другая позже и т.д. и т.п. Что в таком подходе неправильно?
Glory
Потому что трассировка/мониторинг для вас - это слишком затратно.

как раз чтобы не уподобляться
АБС
...большая машина "воин-купол" пришла в движение от пальца в отверстии пятом и от пальца в отверстии сорок седьмом, и движение было неодолимое, быстрое и прямое...
22 окт 15, 12:39    [18311199]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Причём тут пальцем в небо и угадать?

Потому что вы на основе пересказа очевидцев о количестве мычаний глухонемого больного пытаетесь назначить лечение.

Ex_Soft
Я просто пытаюсь понять то, что расписано в мегабайтах страниц в инете

И как вам эти мегабайты помогу узнать, какие конфликты блокировок были именно на вашем сервере ?

Ex_Soft
Что в таком подходе неправильно?

То, что вы считаете, что ничего, кроме этих "двух запросов", на сервере не происходит
22 окт 15, 12:43    [18311222]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Потому что вы на основе пересказа очевидцев о количестве мычаний глухонемого больного пытаетесь назначить лечение.

Где вы это узрели? Я не спрашивал Что делатЪ? (т.е. назначать лечение). Я пока хочу понять почему такое возможно и начинаю с азов (уже полность абстрагировавшись от конкретного случая).

BTW, это выдает несколько больше, чем пишут в букварях

К сообщению приложен файл. Размер - 123Kb
22 окт 15, 12:52    [18311290]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Я пока хочу понять почему такое возможно и начинаю с азов (уже полность абстрагировавшись от конкретного случая).

Вы хотите абстрактно обсудить все 100500 возможных причин ?
22 окт 15, 12:54    [18311318]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Ex_Soft
Я пока хочу понять почему такое возможно и начинаю с азов (уже полность абстрагировавшись от конкретного случая).

Вы хотите абстрактно обсудить все 100500 возможных причин ?

Скажите, Вам в школе алгебру и начала анализа сразу с первого класса преподавать начали или, все-таки, начали с арифметики/математики? Говорить о ТФКП не зная арифметики - бессмысленно. Вот я и пытаюсь понять как оно работает (для начала на примерах из букваря с двумя транзакциями и двумя запросами).
Ну... И... Каждая причина основывается на чём-то - т.е. имеет теоретическое обоснование. И количество их - конечно.
22 окт 15, 13:09    [18311422]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Скажите, Вам в школе алгебру и начала анализа сразу с первого класса преподавать начали или, все-таки, начали с арифметики/математики? Говорить о ТФКП не зная арифметики - бессмысленно. Вот я и пытаюсь понять как оно работает (для начала на примерах из букваря с двумя транзакциями и двумя запросами).
Ну... И... Каждая причина основывается на чём-то - т.е. имеет теоретическое обоснование. И количество их - конечно.

Про какую алгебру вы сейчас говорите ? Ааа, вы таблицу умножения в алгебру отнесли ?

Вы пытаетесь заполнить отсутствующую у вас информацию абстрактными рассуждениями
Если имело место блокировка, то она видна в трассировке. Со всеми сопустствующими "аттрибутами", как то запрос, соединение, пользовтель и тп.
Для чего нужно абстрактно фантазировать обо все этом ?
22 окт 15, 13:13    [18311456]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
бхвпмщъ
Guest
Ex_Soft
И количество их - конечно.

в меня столько попкорна не влезет
22 окт 15, 13:14    [18311466]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Про какую алгебру вы сейчас говорите ? Ааа, вы таблицу умножения в алгебру отнесли ?

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

Ну, если Вы обладаете этими сакральными знаниями - так поделитесь, pls... Буду премного благодарен. Можете на примере из букварика на двух транзакциях чётко, ясно и однозначно описать кто, на что, какие и в какой момент ставит блокировки (пусть пока без эскалации).
Glory
Для чего нужно абстрактно фантазировать обо все этом ?

Чтобы понять как это работает. Или по Вашему все те букварики написаны фантазерами? Картинка с другого сайта.
22 окт 15, 13:22    [18311534]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
там далеко больше, чем таблица умножения

Но вы то про таблицу умноржени спрашиваете

Ex_Soft
Ну, если Вы обладаете этими сакральными знаниями - так поделитесь, pls... Буду премного благодарен. Можете на примере из букварика на двух транзакциях чётко, ясно и однозначно описать кто, на что, какие и в какой момент ставит блокировки (пусть пока без эскалации).

Вы идитот ? Вы думаете, что кто-то может вместо трассировщика дать вам инлормацию обо все, что происходило на вашем сервере ?

Ex_Soft
Чтобы понять как это работает.

Что "это" ? Блокировки ?
Они работаю так - все процессы сообщает серверу о том, какие объекты и как они хотят блокировать. И сервер согласно таблицы совместимости блокировок или разрешает блокировку или ставит процесс в лист ожидания.
22 окт 15, 13:29    [18311582]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Вы думаете, что кто-то может вместо трассировщика дать вам инлормацию обо все, что происходило на вашем сервере ?

Сервер/анализатор/оптимизатор/etc писали люди на основании так сказать теоретических изысканий (достаточно полистать "опус" сих фантазеров, чтобы понять, что это все не с потолка взято). Поэтому если знать как это работает, можно ответить на некоторые (я не говорю на все) вопросы и без трасировщика.

Glory
Что "это" ? Блокировки ?
Они работаю так - все процессы сообщает серверу о том, какие объекты и как они хотят блокировать. И сервер согласно таблицы совместимости блокировок или разрешает блокировку или ставит процесс в лист ожидания.

Не надо все процессы. У нас ЭстЪ две конкретных транзакции. В одной update/insert, в другой - select.
22 окт 15, 13:53    [18311787]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Не надо все процессы. У нас ЭстЪ две конкретных транзакции. В одной update/insert, в другой - select.

И вы хотите, чтобы вам дали сценарий, где они блокируют друг друга ?

Ex_Soft
Сервер/анализатор/оптимизатор/etc писали люди на основании так сказать теоретических изысканий (достаточно полистать "опус" сих фантазеров, чтобы понять, что это все не с потолка взято). Поэтому если знать как это работает, можно ответить на некоторые (я не говорю на все) вопросы и без трасировщика.

Ответить на вопрос, почему возникает клиентский таймаут, легко.
Потому что время выполнения превышает время таймаута.
22 окт 15, 13:57    [18311822]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
И вы хотите, чтобы вам дали сценарий, где они блокируют друг друга ?

Нет. Для начала
Ex_Soft
кто, на что, какие и в какой момент ставит блокировки (пусть пока без эскалации).
22 окт 15, 14:28    [18312030]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Ex_Soft
кто, на что, какие и в какой момент ставит блокировки (пусть пока без эскалации).

Фейспалм.
Это не скрипт. Это трассировка.
Потому что это события.
22 окт 15, 14:30    [18312039]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
invm
Member

Откуда: Москва
Сообщений: 9443
Ex_Soft
Нет. Для начала
Ex_Soft
кто, на что, какие и в какой момент ставит блокировки (пусть пока без эскалации).
Запускаете профайлер. Создаете новую трассировку со следующими событиями: SQL:StmtStarting, SQL:StmtCompleted, Lock:Acquired, Lock:Released.
Добавляете фильтр по SPID на интересующую вас сессию.
Выполняете в этой сессии запрос и изучаете в профайлере результат.
22 окт 15, 14:34    [18312081]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7710
Glory
Это не скрипт.

Фейспалм.
Причём тут скрипт вообще? Абстрагируйтесь. Вот же люди как-то фантазируют Картинка с другого сайта.
22 окт 15, 14:38    [18312111]     Ответить | Цитировать Сообщить модератору
 Re: select with (nolock) отваливается по timeout'у  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ex_Soft
Причём тут скрипт вообще? Абстрагируйтесь. Вот же люди как-то фантазируют

Т.е. вам еще и картинки нарисовать ?
22 окт 15, 14:40    [18312125]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить