Вход | Регистрация
 

Вопрос про блокировки СУБД

Вопрос про блокировки СУБД
Я
   LLIaMaH
 
15.07.19 - 08:20
Занялся изучением блокировок, но из теории не очень могу это понять часть вещей.
Правильно ли я понимаю, что

1) в режиме клиент-сервера 1С я могу одновременно писать в N потоков, в одну таблицу БД, регистр (если записи уникальны), разные документы, разные элементы справочника и не переживать за блокировку данных, у пользователей не будет ошибки о блокировке, т.к. в каждом случае, это все уникальный набор полей таблицы БД, а в серверном режиме таблица БД блокирует на уровне записи, в отличии от файлового где на уровне таблицы.

2) В свою очередь управляемые блокировки мне нужны для того, чтобы, исключить не санкционирование изменение данных когда я их считал, что бы враги в интересуещем меня разрезе не могли их поменять, например я читаю информацию и хочу чтобы она не менялась пока я с ней что-то делаю, меняю или обрабатываю например, после этого я снимаю блокировку. Например те же отрицательные остатки, чтобы никто в разрезе интересующего пространства блокировок регистра остатков не внес изменения, пока я не закончу свои, или например если бы не было встроенной в платформу пессимистичной блокировки открытого элемента справочника, то это мог бы сделать я программно, и уже именно в результате этих действий у пользователей возникает ошибка блокировки данных.
 
 
   unregistered
 
1 - 15.07.19 - 08:56
(0) > в режиме клиент-сервера 1С я могу одновременно писать в N потоков, в одну таблицу БД, регистр (если записи уникальны), ....и не переживать за блокировку данных,

Уточнение 1. По регистрам. Если записи уникальны по набору измерений.
Уточнение 2. Не переживать ты можешь в том случае, если блокировки прописаны в коде. В таком случае ты можешь быть уверен, что блокировка установлена исключительно на те записи, которые тебе нужны. В противном случае блокировка может быть установлена на диапазон записей превышающий нужные, а в некоторых случаях и на всю таблицу. Например в случае регистра бухгалтерии при записи даже относительно несложного и небольшого набора записей может блокироваться довольно большой диапазон записей в таблицах итогов.
   xXeNoNx
 
2 - 15.07.19 - 09:08
(0) людикони!
   xXeNoNx
 
3 - 15.07.19 - 09:11
есть еще эскалация блокировок, есть еще сплиттер, есть автоматический режим управления блокировками.
И каззалось бы причем тут пессемистическая блокировка
   xXeNoNx
 
4 - 15.07.19 - 09:17
>>управляемые блокировки мне нужны для того, чтобы, исключить не санкционирование изменение данных когда я их считал

А это плохой подход
   LLIaMaH
 
5 - 15.07.19 - 10:18
(3) ну это я изучаю как раз, для меня скорее важно было понять про блокирование на уровне уникальных записей таблицы БД, например есть у меня сейчас задача по созданию N тысяч документов из файлов, делающие движения в регистрах, для целей ускорения хочу попробовать "многопоточность", запускать N фоновых заданий на загрузку и проведение и я не до конца понимал, что задания не будут мешать друг другу, т.к. в моей практике я не сталкивался с задачами, где требовались знания про блокировки. Знал что есть, но как работает не вдавался. Обычно же как, если начала куча пользователей шлепать документы, а парально еще восстановление последовательности или закрытие, то начинают валится сообщения о блокировках, ну я по незнанию думал, что проведение документа блокирует таблицу целиком и был не далек от правды, т.к. в основном работал с мелкики клиентами на файловых базах, с серверными очень редко, а тут решил восполнить пробел в знаниях.
   rsv
 
6 - 15.07.19 - 10:19
(0)

) в режиме клиент-сервера 1С я могу одновременно писать в N потоков, в одну таблицу БД, регистр (если записи уникальны), разные документы, разные элементы справочника и не переживать за блокировку данных, у пользователей не будет ошибки о блокировке, т.к. в каждом случае, это все уникальный набор полей таблицы БД, а в серверном режиме таблица БД блокирует на уровне записи, в отличии от файлового

В документах могут быть и одинаковые данные. Это не вызовет блокировок при записи в табличку дока т.к регистраторы разные. Но вызовет блокировку табличек остатков регистра т.к там нет роля регистратор ....но есть поле сплиттер . По умолчанию оно не поднимается
   Timon1405
 
7 - 15.07.19 - 10:26
(6) >>"табличек остатков регистра" 
скорее "табличек итогов регистра"
   rsv
 
8 - 15.07.19 - 10:30
(7) Назовём их просто  тоталами
   xXeNoNx
 
9 - 15.07.19 - 13:41
(8) мне нравится название - суммы...
Давайте называть все своими именами.

>> ...в моей практике я не сталкивался с задачами, где требовались знания про блокировки. - сталкивался, только об этом скорее всего не знал!
Блокировки и работа в 1с - неразрывные понятия

>> Обычно же как, если начала куча пользователей шлепать документы, а парально еще восстановление последовательности или закрытие - как бы восстанавливать последовательность нужно в пики наименьшей активности работы пользователей

>> задача по созданию N тысяч документов из файлов, делающие движения в регистрах, для целей ускорения хочу попробовать "многопоточность" - Это Вам не нужно, данная задача не благодарная и не имеет смысла.
   xXeNoNx
 
10 - 15.07.19 - 13:47
+(9) например: Как Вы будете параллельно переносить реализации и поступления?
   ДенисЧ
 
11 - 15.07.19 - 13:54
(9) "данная задача не благодарная и не имеет смысла."
Добавь "... с моей точки зрения". Ты же не знаешь постановки задачи...
   xXeNoNx
 
12 - 15.07.19 - 13:59
(11) когда конкретизирует, тогда и подпишу - "... с моей точки зрения"
   xXeNoNx
 
13 - 15.07.19 - 13:59
+(12) или не подпишу)
   ДенисЧ
 
14 - 15.07.19 - 14:04
(12) (13) Ты не из Северной Америки? А то занудлив как-то... ))))))))
   xXeNoNx
 
15 - 15.07.19 - 14:11
(14) таки не))
ТС чето ходит вокруг да около.., хрен пойми что хочет.
Сказал бы: Ребят, расскажите пож. про управляемые блокировки.
Ему бы столько советов надавали.., аналогично с решением той или иной задачи..
Вот и приходится мучиться...
   xXeNoNx
 
16 - 15.07.19 - 14:13
(14) по-прежнему в магнитке?
Иль я тебя с кем-то перепутал...
   ДенисЧ
 
17 - 15.07.19 - 14:17
(16) Какой магнитке? Как МЕНЯ можно с кем-то спутать? ))))
   xXeNoNx
 
18 - 15.07.19 - 14:19
(17) магнитка = Магнитогорск
   xXeNoNx
 
19 - 15.07.19 - 14:24
(17) а нет.., это был не ты...
   LLIaMaH
 
20 - 16.07.19 - 08:00
(15) да вроде как ничего конкретного и не нужно, просто теорию изучал, а в стате от 1С все так обще, и про блокировки на уровне СУБД и про 1С ну вобщем в целом вроед понятно.

А задача вялотекущая есть такая, в связи с которой я полез разбиратся. Есть примерно 3000 файлов N раз в месяц, 4х типов, общее количество строк во файлах 10 миллионов, есть самописный документ делает движения в 4х видах регистров по каждому типу файлов, на первой стадии распознаются файлы, что правильный формат, сравниваются по хешу с уже загруженными, если нет дубликатов создаем документ, сохраняем туда файл, далее парсим файл, создаем нужный набор записей, заполняем набор, сохраняем набор в регистр. Файлы, документы и записи уникальны и не пересекаются по наборам полям. Тут у меня и встал вопрос а не будут ли документы блокировать работу друг другу, но вроде как выяснили что не будут, т.к.к наборы уникальные. Далее из всего этого клеются некие общие файлы содержащие общей цифры и сохраняются в папку. На круг, последовательно, на наших серверах это занимает 8-10 часов, в большинстве своем все автоматизировано, но как всегда когда приходит момент обработки файлов начинается беготня, что все медленно и нада быстрее, плюс бывают косяки в файлах котрые видно только в итоговой склейке и круг нада повторять, в итоге выливается в несколько дней, беглый анализ загрузки показал, что ядра простаива.т, вот я решил поиграться с "многопоточностью 1С". Может я конечно в каком то месте заблуждаюсь.
   zva
 
21 - 16.07.19 - 08:17
"Тут у меня и встал вопрос а не будут ли документы блокировать работу друг другу, но вроде как выяснили что не будут, т.к.к наборы уникальные."
Если набор записей содержит более 100000, то произойдет эскалация блокировки на стороне сервера 1С и заблокируется вся таблица целиком, не зависимо от уникальности набора полей.
   LLIaMaH
 
22 - 16.07.19 - 08:36
(21) сколько тонкостей, это толково где нить описано,  гуглить по ключевым словам "эскалация блокировко 1С" ?
   ДенисЧ
 
23 - 16.07.19 - 08:41
(22) Да, именно по этим словам. Только не 1с, а SQL
   zva
 
24 - 16.07.19 - 09:09
   xXeNoNx
 
25 - 16.07.19 - 10:11
(21) Или не будет блокироваться, если отключить эскалацию//
   LLIaMaH
 
26 - 16.07.19 - 10:26
то есть если я сам блокировок не накладываю, то эскалация все равно возможна, т.к. СУБД сама накладывает блокировки в пределах пространства фигурирующего в документе и его движениях?
   Йохохо
 
27 - 16.07.19 - 10:30
(26) эскалация это попытка СУБД экономить внутренние ресурсы рассчитывающие взаимные блокировки транзакций. Это внутренний механизм СУБД направленный на экономию памяти и ресурсов процессора, к блокировкам отношения не имеет. Имеет отношение к контролю транзакционной целостности и взаимоблокировкам
   zva
 
28 - 16.07.19 - 10:33
(25) Эта платформенная эскалация на уровне сервера 1С, не на уровне СУБД. Ее не получится отключить. Для 1С 8.3 макс порция 100 000, для 1С 8.2 - 20 000.
   zva
 
29 - 16.07.19 - 10:34
Собственно, в 1С 8.3 максимальное количество строк в табличной части документа 99999 - больше низя...
   xXeNoNx
 
30 - 16.07.19 - 10:35
(26) я про субд
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.