Re: Блокировки в бизнес-слое
От: wildwind Россия  
Дата: 28.09.17 13:34
Оценка:
Здравствуйте, Poul_Ko, Вы писали:

P_K>Какие другие решения можете посоветовать?

P_K>Писать свой менеджер блокировок? Есть примеры?

Да, если это действительно оправдано. Примеры есть. Платформа 1С — там свой менеджер блокировок, в дополнение к блокировкам СУБД. Он позволяет заблокировать прикладной объект и обойтись одной блокировкой вместо множества строк в нескольких таблицах. Таким образом уменьшается количество блокировок в базе. Кроме того, возможны такие полезные вещи, как блокировка множества строк по условию. Например (если взять один из твоих примеров), у нас в таблице хранятся статусы заказов. И мы можем одной блокировкой заблокировать все неподтвержденные заказы одного клиента. Или даже группы клиентов. Если все это блокировать в базе, это будет медленно и тяжело для базы.

Но за это приходится платить дорогую цену. Все изменения бизнес объектов должны идти через этот менеждер блокировок. Например, мы не можем выполнить сложный многострочный UPDATE или DELETE, так как наш менеджер блокировок не может проверить, не относятся ли затронутые им строки к заблокированным объектам. Из-за этого сильно страдает производительность на запись.

Ну и правильно реализовать такой менеджер непросто. Например, классическая проблема: когда отпускать блокировки зависшего/отвалившегося клиента?
Отредактировано 28.09.2017 13:36 wildwind . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.