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

0. Олег Филиппов (comol) 3364 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) 3364 21.07.14 00:07 Сейчас в теме
105. timur (timurhv) 8 27.08.14 16:44 Сейчас в теме
Статья помогла для ЗУП/ЗиК 8, где все расчеты выполняются в транзакции - в это время другие учреждения не могут читать данные по регистрам расчета.
После выставления соответствующих настроек: остальные учреждения нормально работают, а по учреждению, где начата транзакция - ждут ее завершения.
106. Дмитрий Воробьев (vde69) 894 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) 3364 19.09.14 21:36 Сейчас в теме
(106) vde69,
например я в самописке 95% всех движений формирую в одном пакетном запросе и сразу их записываю
Да вы открыли глаза всем на правильность кода! Если бы все новые типовые конфигурации 1С не были бы так написаны ни зачто бы не догадался так делать :)))))
110. Владимир Зленко (ZLENKO) 371 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) 371 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) 3364 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) 371 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) 371 23.11.17 19:16 Сейчас в теме
(118)
больше уже шел конфликт блокировок, при удалении использовались управляемые блокировки, и блокировал все подряд, не помогло.

Потому что на уровне MS SQL происходила эскалация блокировок, вот поэтому мне нравятся версионники :-)
120. Александр alex_2h2008 (alex_sh2008) 5 23.11.17 20:42 Сейчас в теме
(119)Самое интересное что в 1С когда блокировал в разных потоках, 1 и тот же объект, но со смещением во времени, ни каких исключение не возникало, говорила все ОК. И узнавал о проблеме только когда SQL сервер привет присылал. Короче плюнул на эти все эксперименты с блокировками в 1С, получается конфликт ну и фиг с ним.
121. Владимир Зленко (ZLENKO) 371 24.11.17 10:59 Сейчас в теме
(120)
И узнавал о проблеме только когда SQL сервер привет присылал. Короче плюнул на эти все эксперименты с блокировками в 1С, получается конфликт ну и фиг с ним.

Зря плюнули... переход на версионный режим решает проблему блокировок.
122. Александр alex_2h2008 (alex_sh2008) 5 24.11.17 11:19 Сейчас в теме
(121)Но и накладывает другие проблемы, в 1С я бы не стал использовать этот режим, да и к тому же мне нужны были эти блокировки, правда я ожидал это на уровне 1С, что бы управлять потоками, так нет штатных механизмов синхронизации, приостановки и т.д.
113. Babys Babys (babys) 82 13.11.17 21:42 Сейчас в теме
Если у все базы на уф, и не нужен ора в перспективе, то комитьте.
123. Максим Шуйский (maxpiter) 141 06.01.18 04:52 Сейчас в теме
А на сколько это применимо к 7.7?
124. Олег Филиппов (comol) 3364 09.01.18 19:23 Сейчас в теме
(123) Уже ведь 2018 год... 7.7 это не поможет. 7.7 в принципе ничто уже не поможет :)))
125. Максим Шуйский (maxpiter) 141 09.01.18 20:54 Сейчас в теме
(124) все кроме одной бд уже на 8.3, но одну, увы, перетащить очень затратно. Связываться с переездом и переобучением 100+ человек то ещё веселье. Люди с 2004 года на этой платформе сидят и все бы ничего, но не хватает скорости в "документах в секунду". 8ка тоже не факт что при тех же разрезах (заявки, резервы, партии, взаиморасчеты, продажи, проводки) даст улучшения. В общем в поиске светлых голов и решений :)
Оставьте свое сообщение