Факторы, снижающие вероятность взаимного блокирования

Пути решения взаимных блокировок

Модератор: Дмитрий Юхтимовский

Факторы, снижающие вероятность взаимного блокирования

Сообщение Гилёв Вячеслав » 22 фев 2013, 17:13

1. минимизировать время транзакций и длительность операций (даже ускорение запроса — это очень хорошо)
2. минимизировать количество объектов, которые используются в одной операции или транзакции (в том числе заменять объектное чтение объектов на запросы с указанием нужных свойств объекта и отборами)
3. захватывать все нужные объекты для операции или транзакции «сразу», а не постепенно (т.е. если вы собираетесь читать остатки с блокированием на чтение, лучше сразу заблокировать на запись, если вы точно знаете что будете писать, или как делается в некоторых случаях, сначало записываются движения а потом просто проверяются отрицательные остатки и откатывается в случаи нахождения минусов).
4. не захватывать новые ресурсы не отпустив предыдущие, в том числе разбивать большие операции или транзакции на пакет более мелких
5. не пересекаться по ресурсам, работать с версиями объектов (не всегда это можно в 1С), не создавать любого из 4х условий , описанных в предыдущем разделе.
в 1С нет возможности узнавать наложенные блокировки в явном виде и управлять ими, но теоретически существуют такие приемы как
6. В случаях, когда процесс запрашивает доступ к ресурсу, который не может быть сразу предоставлено, он освобождает остальных занятых ресурсов, и передает их в очередь на запрос. Работу процесса будет возобновлено после получения доступа ко всем ресурсам в очереди (старые и новые ресурсы).
7. Сначала проверить возможность предоставления ресурса, если возможность предоставить ресурс отсутствует из-за использования его другим процессом, который ожидает освобождения некоторых других ресурсов, то освободить этот ресурс, и передать его процесса-заказчику. Если необходимый ресурс как недоступен, так и процесс, что его использует, не ожидает освобождения других ресурсов, то перевести процесс, подал запрос, в состоянии ожидания. Во время ожидания, некоторые содержащиеся ним ресурсы могут быть освобождены из-запросы третьих процессов. Процесс возобновляет работу после того, как получит необходимые ресурсы и ресурсы, которые были уволены во время ожидания.
8. Для упорядочивания захвата ресурсов всем типам ресурсов задаются «порядковые номера», и затем обеспечить выполнение процессами правила «захватывать ресурсы только в возрастающем порядке номеров».
9. Указать «расписание» когда определенные ресурсы уже «забронированы» и их захватывать даже не надо пытаться.
Гилёв Вячеслав
 
Сообщений: 2437
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Вернуться в Проблемы с взаимными блокировками

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron