![]() |
|
Модераторы: gambit |
![]()
|
|
| Darkmaster |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2005 Репутация: нет Всего: нет |
Делаю для себя небольшой учебный пример работы с пессимистичным параллелизмом. Возникло несколько вопросов. В моей программе я блокирую конкретную строку при помощи примерно такого кода:
Делается это для того, чтобы в тех ситуациях, когда один пользователь открыл окно для введения данных обновляемой строки, другой пользователь не мог ее обновить. До тех пор, пока первый пользователь не сохранит свою запись. В ходе этой работы у меня возникло несколько вопросов, ответы на которые в сети не удалось найти. Буду благодарен, если поможете. Итак, вопросы: 1) В моей ситуации, когда 1-пользователь редактирует статью с JobId 2, а второй пользователь уже нажимает на кнопку "Сохранить", отредактировав статью с JobId 2 программа немного подвисает. Запись, конечно, не обновляется. В Exception выдается информация о том, что время ожидания прошло. Такой вопрос: стоит ли так поступать или есть какая-то возможность сделать так, чтобы программа сразу же понимала, что такая-то строка заблокирована и ее уже не обновить? 2) Мне кажется, что было бы лучше если в программе была возможность сделать так, чтобы в случае Holdlock строки он не мог даже открыть окно редактирования. Т.е. чтобы каким то-то образом при запросе Select или перед ним строка проверялась на доступность. Возможно ли такое? --------------------
GeekTV - интернет-телевидение для гиков |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
на мой взгляд в .net так не принято. принято данные кешировать на клиенте и уже потом в базу пихать. Есть даже ADO.NET Sync Framework....
--- у нас в системе было вообще хитро сделано: обновление шло через процедуру, и sql сервер внутри этой процедуры оповещал клиентов по TCP (свой протокол был) об изменениях... ужасно геморойно. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 1 Всего: 4 |
ИМХО:
Pessimistic Concurrency используется в средах с высокой конкуренцией использования данных, где стоимость защиты данных с помощью блокировок меньше, чем стоимость обслуживания отката транзакций, если происходят конфликты параллелизма => 1. увеличить время ожидания до рационального 2. в этом поможет уровень изоляции транзакции мсдн линк P.S: Никогда не использовал Pessimistic Concurrency так что реального опыта не имею --------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
| Darkmaster |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2005 Репутация: нет Всего: нет |
Спасибо за ответы.
Пошел читать инфу по Sync Framework --------------------
GeekTV - интернет-телевидение для гиков |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |