MSSQL. великие гуру, избавьте от deadlock
От: Mikst  
Дата: 20.10.05 11:05
Оценка:
MS SQL Server 2000

Проблем такой: есть таблица, к ней очень много обращаются за чтением данных (много это где-то 2-3 запроса в секунду). И несколько реже, но тоже часто (раз в 1-2 минуты) в ней делают update 1% строк (тоже примерно).
Основная проблема — возникающие при этом deadlock'и. Читающее приложение переписать нельзя. Изменяющее можно.
При дэдлоке в читающем выдается пустой результат, эксепшн банально скипается

Изменения длятся около 1-2 секунд.
Думал сделать такие варианты:
1. update построчный, а не всех сразу, время увеличивается до 5 секунд, что уже неприятно для пользователя.
2. перед update делаю lock table — соответственно стоят все select. и все другие update (их может быть несколько для разных данных).


Вопрос, как лучше поступить. Просто до этого работал с ораклом, и такой головной болью не страдал

Витает мысль — улучщить подход №2: можно ли заблокировать только строки возвращаемые запросом типа (select id from t where p=x... ), и уже заблокировав их делать update t ... where p=x .

Думаю проблемс стандартный, но как "правильнее" побороть не знаю
Спасибо заранее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.