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

Откуда: Kiev
Сообщений: 6794
PizzaPizza
felix_ff
простите господи - это ересь.

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


А что, локмонитор откатывает сессию, а не транзакцию? Где об этом прочитать можно? Это документированное поведение, что когда "он не сможет выбрать жертву" он кидает в лог unresolved deadlock?

буквально так. Вам же до этого гугл всё говорил, не в состоянии спросить?
2 окт 18, 08:47    [21692170]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
PizzaPizza
А что, локмонитор откатывает сессию, а не транзакцию?
Появилось новое понятие "откат сессии"?
Жертвой дедлока является транзакция, а не сессия.
2 окт 18, 10:46    [21692289]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Олегон
Member

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

лично мне интересно что за вторая транзакция, по transaction_id можно бы было посмотреть в sys.dm_tran_database_transactions ее тип и состояние.


Тоже склоняюсь к такому мнению.
Данные из sys.dm_tran_database_transactions прилагаю.
Транзакция 5448341393 - там, где ожидание Sch-M блокировки.

Пока предположение, что это связано с тем, что исправляется в этом фиксе:
https://support.microsoft.com/en-us/help/4090320/significantly-increased-pagelatch-ex-contentions-in-sys-sysobjvalues

Через недельку планируем накатить CU13. За это время буду пробовать воспроизвести ситуацию.

Непонятно, почему возникла эта ошибка, т.к. ранее не наблюдалось и никих событий с конфигурацией сервера или изменением кода не происходила. База наша, сервер наш, DBA наши, разработчики наши, код наш. Всё наше :)

Есть ещё подозрения о том, что 16 сентября были установлены обновления на Windows Server, возможно они как-то повлияли на возникновение такой ситуации.

К сообщению приложен файл (dm_tran_database_transactions.txt - 844bytes) cкачать
2 окт 18, 14:06    [21692632]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 345
Уже советовали переделать логику с использованием табличной переменной?
Но это нужно делать аккуратно - если таблица маленькая - может и прокатит.
Или использовать глобальную временную таблицу с доп колонкой на id сессии.
2 окт 18, 17:15    [21693023]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Александр Бердышев,

автор
Уже советовали переделать логику с использованием табличной переменной?

и что это поменяет в положительную сторону?
2 окт 18, 17:16    [21693027]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
invm
PizzaPizza
А что, локмонитор откатывает сессию, а не транзакцию?
Появилось новое понятие "откат сессии"?
Жертвой дедлока является транзакция, а не сессия.


Вот я тоже думаю над фразой "не сможет выбрать жертву для abort-операции, потому что жертвой в данном случае будет выступать та же самая сессия" и не понимаю, как жертвой может быть сессия, а не транзакция.
2 окт 18, 19:35    [21693209]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
TaPaK
PizzaPizza
пропущено...


А что, локмонитор откатывает сессию, а не транзакцию? Где об этом прочитать можно? Это документированное поведение, что когда "он не сможет выбрать жертву" он кидает в лог unresolved deadlock?

буквально так. Вам же до этого гугл всё говорил, не в состоянии спросить?


Чо, рили? Сессия откатывается?
Я тоже могу быть мелочным и придираться.

Таки где тут можно почитать про откат сессии и выброс в логи "unresolved deadlock" ну или хотя бы без отката сессии?
2 окт 18, 19:39    [21693216]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
PizzaPizza
TaPaK
пропущено...

буквально так. Вам же до этого гугл всё говорил, не в состоянии спросить?


Чо, рили? Сессия откатывается?
Я тоже могу быть мелочным и придираться.

Таки где тут можно почитать про откат сессии и выброс в логи "unresolved deadlock" ну или хотя бы без отката сессии?

https://micoresolutions.com/scheduler-unresolved-deadlock/
2 окт 18, 19:45    [21693220]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
TaPaK,

https://blogs.msdn.microsoft.com/bobsql/2016/06/21/unresolved-deadlock-vs-scheduler-deadlock/
2 окт 18, 19:46    [21693225]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
PizzaPizza,

Вы что то между строк что ли читаете.

При разрешении дедлока жертвой выбирается процесс(если уж вам так слово сессия не нравится) - у процесса активная транзакция откатывается и процесс получает 1205 ошибку.
В случае двух активных транзакций в рамках одной сессии локмонитор не сможет определить процесс жертву поскольку в рамках этого же процесс есть транзакция которая должна остаться, но не факт что он ее не прибьет.
2 окт 18, 20:18    [21693281]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

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

Спасибо, я это прочитал сразу после уточнения ТС про его запись в логе.

И там написано, что это не стандартное поведение, это product issue и проблема связана с неспособностью локмонитора безопасно выполнить свою работу. И это (откат сессии) уже не в компетенции локмонитора.

Тем ещё написано, что все сессии должны быть убиты на сервере в этом случае. То, что это не происходит у ТС вызывает у меня предположения, что эта issue сочетается с каким то ещё фактором, что не даёт северу выполнить даже такие низкоуровневые операции. По моему тут вариантов решений всего два: ждать фикс если он вообще будет либо лезть в код, искать что происходит и писать workaround.
2 окт 18, 20:26    [21693290]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
PizzaPizza
Тем ещё написано, что все сессии должны быть убиты на сервере в этом случае. То, что это не происходит у ТС ...

он реально только рыгать и умеет.
не дедлок всю базу в оффлайн отправит, а аборт роллбэка.
поэтому его и не делают, твою мать
автор
Because the session is already in rollback, it is unsafe to force an abort that command. Rollback failure causes SQL Server to take the database offline. This results in the elimination of all active sessions on the database.
2 окт 18, 20:31    [21693298]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

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

Откатывается транзакция все же. Теперь понятнее стало.

Никогда не запускал две транзакции одновременно в одной сессии, только вложенные. Поэтому не сталкивался с вами описываемым случаем...
2 окт 18, 20:32    [21693300]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
PizzaPizza
f
Никогда не запускал две транзакции одновременно в одной сессии, только вложенные. Поэтому не сталкивался с вами описываемым случаем...

да надо же.
приоткрою страшную тайну: ТС тоже не запускает "две транзакции одновременно в одной сессии"
2 окт 18, 20:35    [21693303]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

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

Мне моя брезгливость дорога,
мной руководящая давно:
даже чтобы плюнуть во врага,
я не набираю в рот гавно.
2 окт 18, 20:37    [21693305]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
PizzaPizza
felix_ff,

Откатывается транзакция все же. Теперь понятнее стало.

Никогда не запускал две транзакции одновременно в одной сессии, только вложенные. Поэтому не сталкивался с вами описываемым случаем...


множественные пользовательские транзакции в рамках одной сессиии я встречал только в режиме работы с MARS.
но у ТС другая проблема судя по снимку database_transactions у него две системные транзакции. у обоих type=3
2 окт 18, 20:39    [21693310]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
Yasha123
PizzaPizza
f
Никогда не запускал две транзакции одновременно в одной сессии, только вложенные. Поэтому не сталкивался с вами описываемым случаем...

да надо же.
приоткрою страшную тайну: ТС тоже не запускает "две транзакции одновременно в одной сессии"


Откуда вторая транзакция в сессии берется? От delete/create?
2 окт 18, 20:40    [21693311]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
PizzaPizza
Yasha123,

Мне моя брезгливость дорога,
мной руководящая давно:
даже чтобы плюнуть во врага,
я не набираю в рот гавно.

так его и набирать не надо, оно оттуда все валится и валится,
и из ушей тоже валит.
весь топик нам пицца засрала своим невежественным бредом.
и конца-края этому не видно, ибо невежество пиццы БЕЗГРАНИЧНО
2 окт 18, 20:40    [21693313]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

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

Можешь не благодарить за предоставленную возможность покрасоваться на моем фоне.

Советую найти другой способ компенсации - я не вечно тут буду.
2 окт 18, 20:47    [21693320]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
PizzaPizza
Откуда вторая транзакция в сессии берется? От delete/create?

пора задать себе наводящий вопрос:
а что, DELETE накладывает SCH-M на таблицу?
а CREATE?

так кто тут красуется, а кого уже просто тошит от того, во что форум превратился?
---
вот ведь не стоило сюда возвращаться,
то одного тролля кормишь, то другого,
в результате Козлово нашествие перевешивает слабое присутствие действительно знающих людей
2 окт 18, 20:52    [21693326]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
Yasha123
PizzaPizza
Откуда вторая транзакция в сессии берется? От delete/create?

пора задать себе наводящий вопрос:
а что, DELETE накладывает SCH-M на таблицу?
а CREATE?

так кто тут красуется, а кого уже просто тошит от того, во что форум превратился?
---
вот ведь не стоило сюда возвращаться,
то одного тролля кормишь, то другого,
в результате Козлово нашествие перевешивает слабое присутствие действительно знающих людей


DDL накладывает SCH-M. (Delete это у меня был drop - путаюсь в rus/eng)

Если тошнит, но тянет туда, где тошнит, то это симптомчик.
Поверьте мне, хождение в дартаньяново-белом и страдания о "как было" работает только на неофитов. У "действительно знающих людей" страданием очков не заработать.
2 окт 18, 21:10    [21693353]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
PizzaPizza
Если тошнит, но тянет туда, где тошнит, то это симптомчик.
Поверьте мне, хождение в дартаньяново-белом и страдания о "как было" работает только на неофитов. У "действительно знающих людей" страданием очков не заработать.

симптомчик у того,
кто путает DROP/DELETE (я понимаю, проблема языка, с сервером вы же тоже, видимо, на русском общаетесь),
но при этом со вменяемого участника форума
требует ни к селу ни к городу уровень изоляции его процедуры,
да еще и с апломбом.
---
про меня тут спросили недавно, мне об этом сообщили,
почему было и не ответить человеку, с которым было приятно обмениваться идеями какое-то время назад.
но как притянуло, так и оттянуло, не переживай, пицца, не буду мешать умничать дальше,
"живите дольше, рожайте больше"
2 окт 18, 21:37    [21693376]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

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

Откатывается транзакция все же. Теперь понятнее стало.

Никогда не запускал две транзакции одновременно в одной сессии, только вложенные. Поэтому не сталкивался с вами описываемым случаем...


множественные пользовательские транзакции в рамках одной сессиии я встречал только в режиме работы с MARS.
но у ТС другая проблема судя по снимку database_transactions у него две системные транзакции. у обоих type=3


Там вроде state 3, а type 1 вот они все и по нулям. Или у меня cvs криво открывается
2 окт 18, 21:44    [21693391]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
Yasha123
умничать дальше


Умничать <> пытаться понять как (разные, и не только умные) люди думают в случае возникновения задач.

Возможно у нас разное понимание целей форума и я не уверен, что мое правильное.
Но мне кажется, что если целью форума ставить исключительно выдачу правильных и "еще более правильных" ответов на вопросы, то форум превратится в площадку для решения задачек с практикумов "умными людьми" и место красования соответственно иерархии и рангу.
Меня же лично интересует не решение, а процесс к нему приводящий, то самое "куда смотреть" и какие варианты могут быть и почему.
2 окт 18, 21:55    [21693412]     Ответить | Цитировать Сообщить модератору
 Re: Ожидание блокировки локальной временной таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
Простенький случай
use tempdb;
go

checkpoint;

begin tran Test;

select 'before create #t', request_owner_id as [Xact ID], object_id('#t') as [#t object_id], * from sys.dm_tran_locks where request_session_id = @@spid and request_mode = 'Sch-M';
create table #t (id int);
select 'after create #t', request_owner_id as [Xact ID], object_id('#t') as [#t object_id], * from sys.dm_tran_locks where request_session_id = @@spid and request_mode = 'Sch-M';

insert into #t values (1);
select 'after insert into #t', request_owner_id as [Xact ID], object_id('#t') as [#t object_id], * from sys.dm_tran_locks where request_session_id = @@spid and request_mode = 'Sch-M';

drop table #t;
select 'after drop #t', request_owner_id as [Xact ID], object_id('#t') as [#t object_id], * from sys.dm_tran_locks where request_session_id = @@spid and request_mode = 'Sch-M';

commit;

declare @lsn nvarchar(30), @tid nvarchar(30);
select top (1) @lsn = [Current LSN], @tid = [Transaction ID] from sys.fn_dblog(null, null) where SPID = @@spid and Operation = N'LOP_BEGIN_XACT' and [Transaction Name] = N'Test' order by [Current LSN] desc;

select
 a.[Transaction Name], a.[Xact Type], a.[Xact ID], a.Description, a.[Current LSN] as [Start LSN], c.lsn as [Finish LSN]
from
 sys.fn_dblog(null, null) a cross apply
 (select [Current LSN] from sys.fn_dblog(null, null) where [Transaction ID] = @tid and Operation = N'LOP_COMMIT_XACT') b(lsn) outer apply
 (select [Current LSN] from sys.fn_dblog(null, null) where [Transaction ID] = a.[Transaction ID] and Operation = N'LOP_COMMIT_XACT') c(lsn)
where
 a.[Current LSN] between @lsn and b.lsn and a.Operation = N'LOP_BEGIN_XACT' and a.SPID = @@spid
order by
 [Start LSN];

На разных версиях сервера результаты могут отличаться.
2 окт 18, 23:11    [21693514]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить