<P>Как то помню на форуме прочитал сообщение типа «а вот знакомый админ удалил
Tablockx и поставил rowlock в хранимых процедурах и все закрутилось,
завертелось»… Эта мысль по-моему достаточно показательна для многих из 1С
программистов и особенно для новичков. </P>
<P>Для того чтобы не наломать дров в вашей ИТ системе необходимо : во первых
понимать для чего существуют блокировки в М S SQL server , во вторых понимать
как устроен блокировочный механизм в 1С. </P>
<P>По первой части есть масса литературы и поэтому не хотелось бы ее
пересказывать…Отмечу лишь принципиальные моменты… </P>
<P>В MS SQL есть понятие блокировок и подсказок блокировок. Основное
предназначение избежать проблем некорректного(грязное чтение, чтение фантомов и
т.п.) чтения информации. </P>
<P>Для 1С значимы следующие виды блокировок </P>
<P>Holdlock – Захватывает разделяемую блокировку до завершения транзакции. </P>
<P>Nolock - Приминима только к оператору select . Читает все… </P>
<P>Tablock - Используется блокировка на уровне таблиц. </P>
<P>Tablockx - Используется монопольная блокировка таблицы. </P>
<P>Отдельно выделю подсказки блокировки которые «горячие» головы рекомендуют
применять </P>
<P>Rowlock - блокировка на уровне строк </P>
<P>Updlock - блокировка на изменение </P>
<P>Readpast - Приминима только для Select . Пропускаются строки блокированные(
rowlock ) другими транзакциями. </P>
<P>Для того что бы понять как действуют эти блокировки необходимо почитать
соответствующую литературу а еще лучше самим проверить на практике эти
блокировки в различных ситуациях… </P>
<P>На специфике реализации блокировок в 1С остановлюсь подробнее. </P>
<P>Механизм блокировок в 1С максимально простой - блокируется все и по
максимуму. </P>
<P>Интересней всего конечно реализация блокировок на документы т.к. как правило
это и является самым узким местом системы а также документы и являются
источником конфликтов. </P>
<P>Начнем с того что в 1С существует специальная таблица _1 sjourn где хранятся
внутренние идентификаторы всех документов. При записи, проведении и т.п.
операциях с документами 1С накладывает блокировку на таблицу _1 sjourn и
соответственно в системе в один момент времени может проводиться не более одного
документа. То есть _1 sjourn выступает в роли своеобразного семафора. До тех пор
пока не завершиться транзакция и соответственно не будет снята блокировка с
таблицы все остальные клиенты будут ждать разблокировки и самое интересное как
это они будут делать. В момент ожидания 1С загружает ресурсы сервера, т.к.
непрерывно сканирует таблицу на вопрос разблокировки и поэтому загружает
процессор по максимуму. </P>
<P><img src=http://klerk.ru/banimg/text11.gif border=0 width="422" height="162"> </P>
<P><img src=http://klerk.ru/banimg/text12.gif border=0 width="539" height="405"> </P>
<P>Удалить механизм блокировок можно путем изменения хранимых процедур, через
которые 1С проверяют таблицы на блокировки.
Читать всю статью: http://www.klerk.ru/soft/1c?8777
