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

Откуда:
Сообщений: 370
Yasha123
какого же тогда хрена


+

Ответ простой и я его уже дал. Пробуйте осмыслить.
У человека по описанию блок, а в логе - баг.
Если это баг я полагаю вы сотрудник МС и собираетесь выкатить/порекомендовать фикс.

Если вы не собираетесь выкатить фикс, то нам остаётся надеяться, что ТС напихает в процедуры логирования, зацепит проблемное место и расскажет в чем дело и как исправилось.

А пока что это все разговоры в пользу бедных и гадание на переменных.
1 окт 18, 11:48    [21690929]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
aleks222
Member

Откуда:
Сообщений: 959
[quot TaPaK]
автор
Do not truncate temp tables

Это шо, delete делать что-ле?
Занафига?
1 окт 18, 11:53    [21690938]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
[quot aleks222]
TaPaK
пропущено...

Это шо, delete делать что-ле?
Занафига?

ну некоторые транкейтят как шаблон в конце процедур.
1 окт 18, 11:59    [21690948]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
что-то подобное аж в 2008-ом:
SPID Blocking itself with Sch-S on a table variable
никак не разрешилось.
но подтверждает, что внутренний дроп производится в своей транзакции
автор
Table variables (and TVF return tables) are not transactional as far as the user is concerned, but internally all operations on table variables run under a seperate transaction from the user transaction. The SCH-S lock is required to compile a plan using the table variable. It is acquired using the users transaction. If a fatal error occurs during the compile (say out of memory), we need to drop the table backing a table variable - this requires a SCH-M lock using the table variables transaction. Thus, this turn of events results in a self-deadlock. Normaly the SCH-S is released before the SCH-M is required, but during stress certain code paths don't do this.


Unfortunately, I don't know of anyway to kill this SPID once the self-deadlock has occured and there is no publicly available biuld with a fix. The (somewhat) good news is, if your server is not under stress you shouldn't see this happening. Contact customer support if you require a fix.
1 окт 18, 12:00    [21690950]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Yasha123
PizzaPizza
Yasha123,

Ответ простой: уровень изоляции 42 надо поставить.
И сразу вам вопрос: как можно откатить транзакцию используя партицирование?
Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту?

FYI "Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша.

я так понимаю, это вещает клон Andy или его ближайший соратник по партии?
какого же тогда хрена doppia Pizza спрашивала
"Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП."
ведь это и есть это самое:
"Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту?"
не форум, натуральное болото

Анна, я Вас умоляю, ну станьте модератором и посмотрите его IP и мои - я всегда вхожу на этот форум исключительно с ленинградских IP, таки знаете, ностальгия. И хватит нервничать, никакой партии и никаких соратников, тут серьезные разработчики решают серьезные вопросы, а Вам все Козловы видятся в каждом.
1 окт 18, 13:04    [21691077]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
Andy_OLAP
я всегда вхожу на этот форум исключительно с ленинградских IP
Даже такой "бывший перт" как вы, знает о прокси и анонимайзерах.
И вы, в рамках свих психологическо-ксенофобских экспериментов, вполне способны пользоваться этими механизмами.
1 окт 18, 13:28    [21691114]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
0wl
Member

Откуда:
Сообщений: 54
Andy_OLAP
тут серьезные разработчики решают серьезные вопросы


Оно и видно: один на голубом глазу изменением уровня изоляции лечит блокировку схемы. И вместо того, чтобы просто признать, что был неправ, начинает рассказывать, как космические корабли бороздят большой театр. А другой -- кулхакер-деанонимизатор -- всем очень-очень тонко намекает, что знает гораздо больше, чем говорит.
Все так серьезно, что не до улыбок.


По теме: если сессия блочит сама себя -- может, как временное решение, запустить ее с MaxDOP 1? Да, топором от головной боли, но может помочь сбить пламя пожара. Ну и, как писали по одной из ссылок выше, проверьте, что флаг 1118 стоит
1 окт 18, 13:30    [21691116]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Andy_OLAP
Анна, я Вас умоляю

...... ег вроде не Анной кличут по факту :)
1 окт 18, 13:32    [21691120]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Maxx
Andy_OLAP
Анна, я Вас умоляю

...... ег вроде не Анной кличут по факту :)

Если я буду называть ее Яшой - она еще больше обидится. Вам таки нужны на форуме сильно разозленные участницы? Я сильно сомневаюсь.
1 окт 18, 13:34    [21691127]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
aleks222
Member

Откуда:
Сообщений: 959
[quot TaPaK]
aleks222
пропущено...

ну некоторые транкейтят как шаблон в конце процедур.

Я транкейтю для повторного использования.
Шо мне типерь делать?
1 окт 18, 17:42    [21691641]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
Andy_OLAP
тут серьезные разработчики решают серьезные вопросы, а Вам все Козловы видятся в каждом.


О да. Серьезные разработчики, которые решают проблемы кода путем плясок с конфигурацией сервера. А чо, у нас дедлок и локмонитор крашится, давай еще накинем ядер или памяти. На первое время поможет (ну да, поможет).

Да и эти серьезные разработчики читать не очень любят - ТС в цикле работает с #таблицами, и ему совет - а вы их не убивайте. Конечно серьезные разработчики экстрасенсы и "знают", что логика ТС позволяет оставлять эти таблицы в памяти на всю сессию, ну и "всем очевидно", что сбор мусора дешевле силами самого сервера.

0wl
один на голубом глазу изменением уровня изоляции лечит блокировку схемы

Еще раз - вопрос был понимании работает ли ТС с этой базой или "знакомый попросил посмотреть". Преклоняюсь перед местными жителями, которые с порога, видимо наложением куда то рук, видят конфигурацию сервера, тексты процедур, планы выполнения и плюс к этому сразу понимают пишет ли это DBA, девелопер или секретарь.

И кстати да, MaxDOP вполне может помочь. Но понравится ли ТС увеличение времени исполнения? Кого это волнует! Больше советов!
1 окт 18, 18:22    [21691717]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
PizzaPizza
Еще раз - вопрос был понимании работает ли ТС с этой базой или "знакомый попросил посмотреть". Преклоняюсь перед местными жителями, которые с порога, видимо наложением куда то рук, видят конфигурацию сервера, тексты процедур, планы выполнения и плюс к этому сразу понимают пишет ли это DBA, девелопер или секретарь.
И как знание перечисленного поможет в диагностике причин проблемы?
PizzaPizza
Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП.
Поясните каким образом, при ожидании на Sch-M, уровень изоляции блокируемой или блокирующей сессии будет на это ожидание влиять?
PizzaPizza
И кстати да, MaxDOP вполне может помочь.
За счет чего, при ожидании на Sch-M?
1 окт 18, 19:18    [21691773]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
0wl
Member

Откуда:
Сообщений: 54
invm
PizzaPizza
И кстати да, MaxDOP вполне может помочь.
За счет чего, при ожидании на Sch-M?


За счет того, что у ТС сессия блокируется сама собой (где-то выше был скриншот).

Вообще, вся ситуация очень похожа на дедлоки из-за параллезма (которые суть -- ошибки движка и должны исправляться в CU), только сессии столкнулись не на ExchangeEvent, а на одном и том же адресе временной таблицы (чего тоже быть не должно, в этом и ошибка). То есть, все полезное, со ссылками, по теме уже было сказано выше, надо бы дождаться результата применения.
1 окт 18, 19:28    [21691781]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
invm
И как знание перечисленного поможет в диагностике причин проблемы?

Никак не поможет. Это простой наводящий вопрос имеющий целью получить чуть больше информации о проблеме. В частности работает ли ТС непосредственно с кодом или же код не доступен и ТС пытается решить проблему конфигурацией сервера.

invm
Поясните каким образом, при ожидании на Sch-M, уровень изоляции блокируемой или блокирующей сессии будет на это ожидание влиять?

Никаким. Это было обобщение, грубоватое, да. См. выше.

PizzaPizza
И кстати да, MaxDOP вполне может помочь.
invm
За счет чего, при ожидании на Sch-M?


Так как мы все тут тыкаем пальцами в небо я тоже могу предположить окружение. Допустим у ТС запускается множество сессий в них множество ХП со своими вызовами ХП и еще и операции на схему и это все в параллель, тогда, при возникновении ошибки/дедлока у сервера начинаются проблемы с очередями/буферами/планировщиками приводящие к краху/ошибкам локмонитора и (дальше полная спекуляция, что может произойти если локмонитор не справился) невозможности выполнения/отката транзакций сессии и она виснет.
Уменьшение параллелизма должно уменьшить количество объектов/блокировок для менеджмента и, наверное, количество дедлоков в принципе. Вопрос в том, что никто не знает есть ли конкретный запрос, на который поможет поставить MaxDOP и как это повлияет на производительность. А по моему, тут надо в код смотреть и, по возможности, минимизировать/изолировать как то возможные проблемы блокировок. Хотя конечно все зависит от проекта, и где то проще пойти по экстенсивному пути ради производительности.
1 окт 18, 20:07    [21691813]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
0wl
За счет того, что у ТС сессия блокируется сама собой (где-то выше был скриншот).
Это однозначный критерий наличия параллелизма?
Можете продемонстрировать параллелизм с наложением Sch-M?
Я знаю один такой вариант - создание/перестроение/удаление индекса. Считаете у ТС именно этот случай?
0wl
Вообще, вся ситуация очень похожа на дедлоки из-за параллезма
Ситуация похожа на дедлок разных транзакций в пределах одной сессии. И является багом.
1 окт 18, 20:27    [21691832]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
PizzaPizza
Так как мы все тут тыкаем пальцами в небо я тоже могу предположить окружение. Допустим у ТС запускается множество сессий в них множество ХП со своими вызовами ХП и еще и операции на схему и это все в параллель, тогда, при возникновении ошибки/дедлока у сервера начинаются проблемы с очередями/буферами/планировщиками приводящие к краху/ошибкам локмонитора и (дальше полная спекуляция, что может произойти если локмонитор не справился) невозможности выполнения/отката транзакций сессии и она виснет.
Теперь наложите на вашу гипотезу тот факт, что у ТС проблема в пределах одной сессии.
1 окт 18, 20:35    [21691844]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
invm
Теперь наложите на вашу гипотезу тот факт, что у ТС проблема в пределах одной сессии.


Я не вижу проблемы с тем, что это одна сессия. Известно, что проблема не очень воспроизводимая, так что вполне мне кажется возможным, что зависшая сессия даёт выполниться другим. Возможно даже, что одновременно существует только одна такая сессия в принципе, согласно условию задачи... Возможно она, эта сессия, запускается в какой то пик нагрузки и сама тяжёлая и при сочетании каких либо факторов даёт проблему.
Все это конечно писанина по воде, с моей точки зрения - без отладочной информации и логов найти затык и (если это баг севера) придумать обходное решение нельзя.

У вас есть ответ? Расскажите. Мне интересно, я никогда не сталкивался с такими нагрузками как у тс и с удовольствием новую информацию съем.
1 окт 18, 21:05    [21691886]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
PizzaPizza
Я не вижу проблемы с тем, что это одна сессия.
Вот и объясните как, в пределах одной сессии, получить ожидание на Sch-M при maxdop > 1 и не получить с maxdop = 1. Учитывая, что на уровне пакета выполнение инструкций всегда последовательное.
1 окт 18, 21:54    [21691927]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
PizzaPizza
с удовольствием новую информацию съем.

https://getyarn.io/yarn-clip/00862414-b0ec-4edb-a710-eb6efd4076b8
1 окт 18, 22:22    [21691945]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
invm
PizzaPizza
Я не вижу проблемы с тем, что это одна сессия.
Вот и объясните как, в пределах одной сессии, получить ожидание на Sch-M при maxdop > 1 и не получить с maxdop = 1. Учитывая, что на уровне пакета выполнение инструкций всегда последовательное.


Ожидание в любом случае будет, но вопрос то не в ожидании, а в том, к чему оно приводит иногда.
Опять допустим: Может в пределах одной сессии запущено несколько экземпляров ХП? В этом случае будут ли выполняться одновременно и конкурировать за ресурсы? Если ХП выполняются одновременно и каждая в параллель, то возможно ли, что некоторое сочетание шагов выполнения этих ХП создаёт слишком много дедлоков на малое количество ресурсов и локмонитор тупо не справляется?
Если это все предположить возможным, то тупое уменьшение количества тасков даст серверу разобраться с сессией.
Это все конечно если допустить, что в коде ХП нет логики, которая дополнительно провоцирует массовые дедлоки.

Вообще когда идёт речь про локи/вейты, то я бы сразу смотрел в lock counters. Видимо все участники дискуссии ознакомлены с этими данными...
1 окт 18, 22:24    [21691947]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
PizzaPizza
Ожидание в любом случае будет, но вопрос то не в ожидании, а в том, к чему оно приводит иногда.
Опять допустим: Может в пределах одной сессии запущено несколько экземпляров ХП? В этом случае будут ли выполняться одновременно и конкурировать за ресурсы?
Вам было бы неплохо, прежде чем выдвигать различные теории, изучить матчасть.
1 окт 18, 22:36    [21691951]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1367
PizzaPizza
invm
пропущено...
Вот и объясните как, в пределах одной сессии, получить ожидание на Sch-M при maxdop > 1 и не получить с maxdop = 1. Учитывая, что на уровне пакета выполнение инструкций всегда последовательное.


Ожидание в любом случае будет, но вопрос то не в ожидании, а в том, к чему оно приводит иногда.
Опять допустим: Может в пределах одной сессии запущено несколько экземпляров ХП? В этом случае будут ли выполняться одновременно и конкурировать за ресурсы? Если ХП выполняются одновременно и каждая в параллель, то возможно ли, что некоторое сочетание шагов выполнения этих ХП создаёт слишком много дедлоков на малое количество ресурсов и локмонитор тупо не справляется?
Если это все предположить возможным, то тупое уменьшение количества тасков даст серверу разобраться с сессией.
Это все конечно если допустить, что в коде ХП нет логики, которая дополнительно провоцирует массовые дедлоки.

Вообще когда идёт речь про локи/вейты, то я бы сразу смотрел в lock counters. Видимо все участники дискуссии ознакомлены с этими данными...


простите господи - это ересь.

лок монитор нормально со всем справляется. графа у ТС нет потому что две транзакции в рамках одной сессии, он просто не сможет выбрать жертву для abort-операции, потому что жертвой в данном случае будет выступать та же самая сессия.

лично мне интересно что за вторая транзакция, по transaction_id можно бы было посмотреть в sys.dm_tran_database_transactions ее тип и состояние.
1 окт 18, 23:24    [21691973]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
invm
PizzaPizza
Ожидание в любом случае будет, но вопрос то не в ожидании, а в том, к чему оно приводит иногда.
Опять допустим: Может в пределах одной сессии запущено несколько экземпляров ХП? В этом случае будут ли выполняться одновременно и конкурировать за ресурсы?
Вам было бы неплохо, прежде чем выдвигать различные теории, изучить матчасть.


Согласен. Для этого форум очень хорошо подходит.
Понимаю, что допущение невозможное об одновременности. Но оно не исключающее. Вариант с конкурирующими сессиями за общие ресурсы остаётся. Вейт на блокировку локальной временной таблицы это просто операция, которую видно последней и на которой одна из сессий встаёт. Что происходит перед этим неизвестно. Какие операции выполнялись, какие ресурсы запрашивались блокировки накладывались... Вообще какую вам этот вейт даёт диагностическую информацию, кроме того, что он там есть помимо возможных сотен других операций?
А вот unresolved deadlock имхо более понятен в плане куда смотреть.
1 окт 18, 23:36    [21691978]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
felix_ff

простите господи - это ересь.

лок монитор нормально со всем справляется. графа у ТС нет потому что две транзакции в рамках одной сессии, он просто не сможет выбрать жертву для abort-операции, потому что жертвой в данном случае будет выступать та же самая сессия.


А что, локмонитор откатывает сессию, а не транзакцию? Где об этом прочитать можно? Это документированное поведение, что когда "он не сможет выбрать жертву" он кидает в лог unresolved deadlock?
2 окт 18, 00:25    [21692013]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
... реки ахинеи разливались с удвоенной силой...
PizzaPizza
Для этого форум очень хорошо подходит.
2 окт 18, 06:42    [21692113]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить