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

Откуда: Питер
Сообщений: 2423
gandalf-the-grey,

ну либо меняйте эту гирлянду хинтов на tablockx либо убирайте индекс
17 ноя 16, 18:54    [19905057]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
msLex
Member

Откуда:
Сообщений: 9293
gandalf-the-grey, а зачем вам

isolationlevel=repeatable read

?
17 ноя 16, 19:01    [19905074]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
aleks2
Guest
msLex
gandalf-the-grey, а зачем вам

isolationlevel=repeatable read

?


Дык, иначе то, дедлок хрен получишь. А так - движуха.
17 ноя 16, 19:10    [19905096]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
aleks2
Не мучь жЫвотное, садист.

И научись, наконец, писать запросы.

UPDATE t SET STATE = @NODE_ID
  from ( SELECT TOP(@TOP) * FROM TBL WITH (tablockx) WHERE STATE = 0 ORDER BY ID ) as t


PS. Ну, можно ишо крит. секцию замутить посредством sp_getapplock. Ежели там выборка нужна из таблицы.


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

Параллельно работающие 8 нод - не моя идея, но мне с ней жить.
Таблок низзя, очередь наполняется триггерами таблиц-источников, их блокировать хреновая идея.
17 ноя 16, 19:14    [19905101]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
aleks2
Guest
gandalf-the-grey

PS. Ну, можно ишо крит. секцию замутить посредством sp_getapplock. Ежели там выборка нужна из таблицы.


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

Параллельно работающие 8 нод - не моя идея, но мне с ней жить.
Таблок низзя, очередь наполняется триггерами таблиц-источников, их блокировать хреновая идея.[/quot]

1. Тем, страдалец, что в нем НЕТ лишнего самосоединения таблицы.
2. Ну-ну, продолжайте поиски чудесного грааля. Хинтов так много на земле и разных планов...
17 ноя 16, 19:21    [19905115]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
msLex
gandalf-the-grey, а зачем вам

isolationlevel=repeatable read

?


Система - чужая. Для нас она - поставщик данных.
дефолтный read commited никто не менял.
repeatable read выставляется для транзакции при указании UPDLOCK.
Без UPDLOCK'а ну ваще никак параллельно ноды не работают по этой задаче. Таблок низзя из-за триггеров на таблицах-источниках, которые сопсно нам данные и пуляют.

Если я че-то не так понимаю - ткните носом. Повторю - я больше по ораклу.
Задача - строить очередь изменяющихся данных и забирать её _параллельно_ несколькими нодами. Другого решения пока не придумали.
17 ноя 16, 19:23    [19905131]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
gandalf-the-grey,

repeatable read чем оправдан?
Deadlocks with Read Repeatable Isolation Level

 
If a custom business object uses an isolation level of read repeatable to access a SQL Server, and the business object is called simultaneously by two clients that send a query and update in the same transaction, a deadlock is possible. Remote Data Service is designed to allow one of the processes to time out to release the deadlock, but the update will fail for that client.
17 ноя 16, 19:24    [19905134]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
gandalf-the-grey,

автор
repeatable read выставляется для транзакции при указании UPDLOCK

кто выставляет? само что ли?
17 ноя 16, 19:25    [19905136]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
TaPaK
gandalf-the-grey,

автор
repeatable read выставляется для транзакции при указании UPDLOCK

кто выставляет? само что ли?


хм, кстати, да... хз) я его точно не выставляю. Может это jdbc самостоятельно делать? Жавистов наших пытать?
В БД дефолт точно никто не менял, стоит read committed
17 ноя 16, 19:29    [19905149]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
aleks2
Guest
gandalf-the-grey
Повторю - я больше по ораклу.

По оракалу ты явно тоже мало чего смыслишь.


WITH (READPAST,

явно написал Черчиль в восемнадцатом году.
17 ноя 16, 19:32    [19905156]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
WarAnt
gandalf-the-grey,

ну либо меняйте эту гирлянду хинтов на tablockx либо убирайте индекс

а если ни то ни другое низзя?
Таблокх - из-за триггеров-поставщиков
Индекс - из-за них же и из-за последующей выборки (перманентные фулл сканы на миллионной таблице?)
17 ноя 16, 19:32    [19905157]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
aleks2
gandalf-the-grey
Повторю - я больше по ораклу.

По оракалу ты явно тоже мало чего смыслишь.


WITH (READPAST,

явно написал Черчиль в восемнадцатом году.


Ты, персонаж, явно хамоват, и пока пользы от тебя как с козла молока, уж простите.

Если есть вариант без READPAST, типа ораклового for update nowait единичной строки в цикле - велкам
17 ноя 16, 19:35    [19905163]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
aleks2
Guest
gandalf-the-grey
aleks2
пропущено...

По оракалу ты явно тоже мало чего смыслишь.


WITH (READPAST,

явно написал Черчиль в восемнадцатом году.


Ты, персонаж, явно хамоват, и пока пользы от тебя как с козла молока, уж простите.

Если есть вариант без READPAST, типа ораклового for update nowait единичной строки в цикле - велкам


Персонаж явно глуповат.
Заметь, козочка, это ты тут скулишь "ниработает".

Тебе ж сказали: перепиши запрос и поставь tablockx.
Но ты ж "гуру оракала". Только сопли вытереть бы ишо.
17 ноя 16, 19:40    [19905176]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
aleks2
gandalf-the-grey
пропущено...


Ты, персонаж, явно хамоват, и пока пользы от тебя как с козла молока, уж простите.

Если есть вариант без READPAST, типа ораклового for update nowait единичной строки в цикле - велкам


Персонаж явно глуповат.
Заметь, козочка, это ты тут скулишь "ниработает".

Тебе ж сказали: перепиши запрос и поставь tablockx.
Но ты ж "гуру оракала". Только сопли вытереть бы ишо.


госпидя, как же мне вас, троллей озабоченных, жаль порой. Надо что-то с собой делать)

сопли вытер, спасибо.
тебе ж сказали - низзя таблокх. но ты ж гуру...

А вот repeatable read - каюсь, не заметил. Возможно, что в нём дело.
17 ноя 16, 20:20    [19905282]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
А с какой скоростью заливются данные?
17 ноя 16, 21:07    [19905452]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
gandalf-the-grey,

Ваш проблемный запрос можно переписать так:
update top (@TOP) TBL_SOM_SYNC_TRM with (readpast)
 set
  STATE = @NODE_ID
where
 STATE = 0;
По крайней мере, это уберет самосоединение таблицы.
17 ноя 16, 21:27    [19905531]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
invm
gandalf-the-grey,

Ваш проблемный запрос можно переписать так:
update top (@TOP) TBL_SOM_SYNC_TRM with (readpast)
 set
  STATE = @NODE_ID
where
 STATE = 0;
По крайней мере, это уберет самосоединение таблицы.

есть подозрение что repeatable read всё равно приведёт к дедлоку
17 ноя 16, 22:22    [19905733]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
TaPaK
есть подозрение что repeatable read всё равно приведёт к дедлоку
Возможно. Где-то в другом месте.
На данный update RR не влияет.
17 ноя 16, 23:32    [19905893]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
aleks2
Guest
invm
gandalf-the-grey,

Ваш проблемный запрос можно переписать так:
update top (@TOP) TBL_SOM_SYNC_TRM with (readpast)
 set
  STATE = @NODE_ID
where
 STATE = 0;
По крайней мере, это уберет самосоединение таблицы.


Однако, это другой запрос. Order by нема.
18 ноя 16, 05:59    [19906121]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
aleks2
Однако, это другой запрос. Order by нема.
Если у него ПК кластерный, то и не нужно.
Но формально ты прав, да. Поэтому так:
with t as
(
 select top (@TOP) STATE from TBL_SOM_SYNC_TRM with (readpast) where STATE = 0 order by ID, STATE
)
update t
 set
  STATE = @NODE_ID;
18 ноя 16, 09:39    [19906377]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
FOX75
Member

Откуда:
Сообщений: 29
ну или
update [TBL_SOM_SYNC_TRM] with (readpast, index(0)) set
	[STATE] = @NODE_ID
option(force order);
18 ноя 16, 11:02    [19906785]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
aleks2
Guest
invm
aleks2
Однако, это другой запрос. Order by нема.
Если у него ПК кластерный, то и не нужно.
Но формально ты прав, да. Поэтому так:
with t as
(
 select top (@TOP) STATE from TBL_SOM_SYNC_TRM with (readpast) where STATE = 0 order by ID, STATE
)
update t
 set
  STATE = @NODE_ID;
Этак я страдальца ишо на предыдущей странице лечил.
А толку то?
18 ноя 16, 11:04    [19906797]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
Mike_za
А с какой скоростью заливются данные?


в фоне около 50-100 записей ставятся в каждую очередь в секунду (очередей несколько)
при пиках чуть больше.
18 ноя 16, 11:19    [19906926]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
gandalf-the-grey
Member

Откуда: НН
Сообщений: 179
invm
aleks2
Однако, это другой запрос. Order by нема.
Если у него ПК кластерный, то и не нужно.
Но формально ты прав, да. Поэтому так:
with t as
(
 select top (@TOP) STATE from TBL_SOM_SYNC_TRM with (readpast) where STATE = 0 order by ID, STATE
)
update t
 set
  STATE = @NODE_ID;


А параллельные селекты с только readpast не приведут ли к наложению S-блокировок на одни и те же строки, при конвертации которых при update получим те же дедлоки?
Сопсно, это были первые грабли, на которые мы встали ("двухшаговая" блокировка при апдейте в MSSQL). Не нужен ли все-таки UPDLOCK?
18 ноя 16, 11:38    [19907074]     Ответить | Цитировать Сообщить модератору
 Re: READPAST и DEADLOCKS  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
gandalf-the-grey
А параллельные селекты с только readpast не приведут ли к наложению S-блокировок на одни и те же строки, при конвертации которых при update получим те же дедлоки?
Нет. В данном случае будет накладываться сразу U.
18 ноя 16, 11:44    [19907108]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить