"Убираем блокировки" в 1С. Заставляем MS SQL работать как Oracle.

0. Олег Филиппов (comol) 3237 27.09.11 08:32 Сейчас в теме
Включение уровня изоляции Read commited shapshot в MS SQL позволяет практически полностью избежать блокировок на уровне MS SQL при использовании управляемого режима

Перейти к публикации

Комментарии
102. ZLENKO.PRO (ZLENKO) 17.07.14 18:35 Сейчас в теме
(99) Алексей777, "платформа 8.2.16.362, УПП, у меня нет самописных управляемых блокировок - все типовое"

Для достижения максимального эффекта по повышению производительности надо бы внести изменения в конфигурацию.
100. Алексей (Алексей777) 16 05.02.14 12:55 Сейчас в теме
спасибо автору, ставлю +.
103. Виктор Круглов (kvic2705) 8 20.07.14 23:47 Сейчас в теме
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '-'.
Msg 195, Level 15, State 5, Line 2
'ALLOW_SNAPSHOT_ISOLATION' is not a recognized SET option.
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '-'.
Msg 195, Level 15, State 5, Line 5
'READ_COMMITTED_SNAPSHOT' is not a recognized SET option.
104. Олег Филиппов (comol) 3237 21.07.14 00:07 Сейчас в теме
105. timur (timurhv) 8 27.08.14 16:44 Сейчас в теме
Статья помогла для ЗУП/ЗиК 8, где все расчеты выполняются в транзакции - в это время другие учреждения не могут читать данные по регистрам расчета.
После выставления соответствующих настроек: остальные учреждения нормально работают, а по учреждению, где начата транзакция - ждут ее завершения.
106. Дмитрий Воробьев (vde69) 881 10.09.14 09:33 Сейчас в теме
не понимаю зачем это нужно вообще?

1с вполне нормально тянет 10 000 одновременно работающих пользователей, вся проблемма 1с состоит в выполнении большого кода в момент с начала чтения данных до момента фиксации транзакции (я об управляемых в авто режиме), по этому необходимо просто сделать обработку проведения быстрой и все...

например я в самописке 95% всех движений формирую в одном пакетном запросе и сразу их записываю, единственное чего у меня вне запроса - это ФИФО списание партий, но и для него все данные я получаю этим-же запросом....

Отгрузка на 1000 позиций при формировании движений накладвает блокировку примерно на 0.1 секунду. Зачем сабж - не понимаю....

Ах да, я забыл про монстров типа УПП, но это проблемма не блокировок а избыточного говнокода...
107. ZLENKO.PRO (ZLENKO) 10.09.14 12:58 Сейчас в теме
(106) vde69, "Ах да, я забыл про монстров типа УПП, но это проблемма не блокировок а избыточного говнокода..."

Предлагаете всем перейти на "самописки" ?
108. ZLENKO.PRO (ZLENKO) 10.09.14 13:00 Сейчас в теме
(106) vde69, "Отгрузка на 1000 позиций при формировании движений накладвает блокировку примерно на 0.1 секунду."

Сделайте замер времени записи 1000 движений по плану счетов по счету с двумя уровнями аналитики (типа Товары на складах)...
109. Олег Филиппов (comol) 3237 19.09.14 21:36 Сейчас в теме
(106) vde69,
например я в самописке 95% всех движений формирую в одном пакетном запросе и сразу их записываю
Да вы открыли глаза всем на правильность кода! Если бы все новые типовые конфигурации 1С не были бы так написаны ни зачто бы не догадался так делать :)))))
110. Владимир Зленко (ZLENKO) 368 21.06.16 13:25 Сейчас в теме
В платформе 8.3 этот режим уже включен по умолчанию, начиная с MSSQL 2005.

Установил 8.3.8.1747, СУБД MSSQL 2008, создал базу средствами сервера приложений.

Проверяю: select name,snapshot_isolation_state_desc,is_read_committed_snapshot_on from sys.databases

name snapshot_isolation_state_desc is_read_committed_snapshot_on
workdb OFF 0

Т.е. не включен... Что я сделал не так?
111. Владимир Зленко (ZLENKO) 368 21.06.16 17:23 Сейчас в теме
(110) ZLENKO, "Т.е. не включен... Что я сделал не так?"

Нашел ответ: "Единственное изменение по отношению к версии 8.2 - это переход на уровень изоляции READ_COMMITED_SNAPSHOT в режиме управляемых блокировок"

P.S.: Он включается при реструктуризации БД при отключенном режиме совместимости с 8.2
112. A2O2tqaOo8Hn 27CDHsRBnQbc (shved) 13.11.17 19:33 Сейчас в теме
коллеги подскажите кто победил? ставить READ_COMMITED или купить оракл? на 13,11,17 ничо не имзенилось?
ПС 70 юзеров. начались жалобы на блокировки
114. Олег Филиппов (comol) 3237 14.11.17 01:37 Сейчас в теме
(112) (113) в 8.3 READ_COMMITED_SNAPSHOT ставится автоматически... ну может не с первой версии с 8.3.3 или 8.3.5. Ну и управляемые блокировки конечно должны быть включены. Нет, Oracle покупать не надо. Грустно с ним всё.
115. A2O2tqaOo8Hn 27CDHsRBnQbc (shved) 14.11.17 06:43 Сейчас в теме
(114)
в 8.3 READ_COMMITED_SNAPSHOT ставится автоматически...


это должно быть видно в скуле?

платформу последняя, блокировки управляемые, совместимость отключена но в скуле snapshot_isolation_state_desc = ОФФ:


Ядро 8.3.10.2650
snapshot_isolation_state_desc = OFF
is_read_committed_snapshot_on = 1

наверно единичка говорит о том что READ_COMMITED включен. а первый параметр не надо насильно включать? щас он включен только у двух системных баз master и msdb.

если READ_COMMITED включен и база на ссд, остается только искать и переписывать код?
116. Александр alex_2h2008 (alex_sh2008) 5 14.11.17 10:05 Сейчас в теме
(115)Блокировки 1С и блокировки SQL не связанные между собой, что бы избавится от блокировок нужно грамотно писать код в 1С, манипуляции на уровне SQL сервера могут привести к непредсказуемым ситуациям, вплоть до потери данных. Насколько я знаю 1С поддерживает на уровне SQL, только READ_COMMITED блокировки.
117. Владимир Зленко (ZLENKO) 368 14.11.17 14:29 Сейчас в теме
(116)
Блокировки 1С и блокировки SQL не связанные между собой, что бы избавится от блокировок нужно грамотно писать код в 1С

Ну не совсем точное высказывание... При автоматических и при управляемых в 1С блокировки в SQL тоже по разному работают.
А в остальном согласен, надо сначала код в 1С переписать, может и хватить только is_read_committed_snapshot_on.
118. Александр alex_2h2008 (alex_sh2008) 5 14.11.17 20:00 Сейчас в теме
(117)В SQL блокировки всегда одинаково работают, если не указано при начале транзакции иной уровень изоляции от используемого по умолчанию. 1С свои блокировки использует над блокировками SQL, думаю когда происходит фиксация транзакции в 1С, в SQL начинается транзакция в SQL. Как то писал рекурсивный алгоритм зачистки организаций в базе, максимум удалось вывести на 18 потоков удаления, больше уже шел конфликт блокировок, при удалении использовались управляемые блокировки, и блокировал все подряд, не помогло.
119. Владимир Зленко (ZLENKO) 368 23.11.17 19:16 Сейчас в теме
(118)
больше уже шел конфликт блокировок, при удалении использовались управляемые блокировки, и блокировал все подряд, не помогло.

Потому что на уровне MS SQL происходила эскалация блокировок, вот поэтому мне нравятся версионники :-)
120. Александр alex_2h2008 (alex_sh2008) 5 23.11.17 20:42 Сейчас в теме
(119)Самое интересное что в 1С когда блокировал в разных потоках, 1 и тот же объект, но со смещением во времени, ни каких исключение не возникало, говорила все ОК. И узнавал о проблеме только когда SQL сервер привет присылал. Короче плюнул на эти все эксперименты с блокировками в 1С, получается конфликт ну и фиг с ним.
113. Babys Babys (babys) 82 13.11.17 21:42 Сейчас в теме
Если у все базы на уф, и не нужен ора в перспективе, то комитьте.
Оставьте свое сообщение