Странно работает UPDLOCK
☑
0
alexlap
15.09.16
✎
17:46
MS SQL 2008 R2:
Делаю следующее:
Begin Transaction
Select TOP 100 [uniqueTradeId], [instrumentId], [MarketTradeTime]
From Transactions with (UPDLock, READPAST)
WHERE [TradeDate] is Null
Order by [MarketTradeTime]
далее в цикле для каждой записи:
update Transactions
SeT [TradeDate] = ?
Where [uniqueTradeId] = ?
Commit Transaction
Индексы:
[uniqueTradeId] уникальный кластерный
[TradeDate], [MarketTradeTime] - обычный
При первом же update - выдает превышено время ожидания запроса. Даже в одном потоке. Что не так,
Без - with (UPDLock, READPAST) работает нормально.
1
xafavute
15.09.16
✎
17:47
индекс на таблице есть?
2
xafavute
15.09.16
✎
17:49
посмотри в профайлере что блокируется?
возможно вся таблица
3
alexlap
15.09.16
✎
17:56
(1) Индексы написал какие есть.
(2) А что транзакция может заблокировать саму себя?
4
xafavute
15.09.16
✎
18:00
саму себя конечно не может
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший