Gilev.ru форум • Просмотр темы – Факторы, снижающие вероятность взаимного блокирования

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

Источник: Gilev.ru форум • Просмотр темы – Факторы, снижающие вероятность взаимного блокирования

 

В последнее время модель поведения автора сильно изменилась. Если раньше у них можно было поживиться свежей идеей на счет MS SQL Server, то сегодня они тупо продают сервисы, на контакт практически не идут. Потому вдвойне ценны подобные репризы.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *