|   |   | 
| 
 | НачатьТранзакцию() | ☑ | ||
|---|---|---|---|---|
| 0
    
        shamannk 28.02.12✎ 11:08 | 
        Мучает один вопрос если перед запросом стоит НачатьТранзакцию() в регистр с режимом блокировки Автомат. Происходит ли блокировка всего регистра до окнчания транзакции и если без транзакции на время выполнения запроса регистр блокируется?  И в яндексе искал и гуглил.     | |||
| 1
    
        Ненавижу 1С гуру 28.02.12✎ 11:12 | 
        имхо, нет, не происходит
  требуется как минимум писать в запросе ДЛЯ ИЗМЕНЕНИЯ и то блокируются только записи попадающие в запрос (хотя зависит от варианта использования: файловый или субд) | |||
| 2
    
        2mugik 28.02.12✎ 11:17 | 
        (0) быстрее чем угулить самому проверить.     | |||
| 3
    
        shamannk 28.02.12✎ 11:20 | 
        (1) Тогда зачем нужен параметр <Режим блокировок> в транзакции?     | |||
| 4
    
        guitar_player 28.02.12✎ 11:21 | 
        (3) для автоматических блокировок     | |||
| 5
    
        shamannk 28.02.12✎ 11:23 | 
        (4) Ниче не понял блокировок не возникает но режими блокиров есть? Объясните если не трудно.     | |||
| 6
    
        alxbzm 28.02.12✎ 11:25 | 
        Запросы в 1С ничего не блокируют вообще (ну кроме конструкции ДЛЯ ИЗМЕНЕНИЯ) - читают все зафиксированные транзакции, а вот метод набора записей Прочитать() как раз блокирует от записи и ждет, если кто-то другой в этот момент пишет в регистр. А вот что будет заблокировано - зависит от режима блокировок: в автомате вся таблица, в упр режиме - только по полям отбора по-моему...     | |||
| 7
    
        Reset 28.02.12✎ 11:26 | 
        (5) Разве описания параметра недостаточно? Выбор режима для транзакции.     | |||
| 8
    
        shamannk 28.02.12✎ 11:27 | 
        (7) Если значение параметра Автоматический, то данная транзакция будет выполняться в режиме автоматических блокировок. Вы про это описаник Режим автомат значит что будет в автомате (КЭП писал?)     | |||
| 9
    
        shamannk 28.02.12✎ 11:29 | 
        (6) Т.е. если у регистра сведений строит режим блокировок Автоматический то при записи в него даже в транзакции с управляемым режимом заблокируется весь регистр?     | |||
| 10
    
        alxbzm 28.02.12✎ 11:29 | 
        (9) да     | |||
| 11
    
        Reset 28.02.12✎ 11:29 | 
        (8) Кэп или не кэп, это прямой ответ на вопрос "Зачем параметр"     | |||
| 12
    
        Господин ПЖ 28.02.12✎ 11:30 | 
        (10) нет...     | |||
| 13
    
        Господин ПЖ 28.02.12✎ 11:30 | 
        блокируется либо конкретная запись либо диапазон...     | |||
| 14
    
        Reset 28.02.12✎ 11:30 | 
        (10) Нет, зависит от субд.     | |||
| 15
    
        Ненавижу 1С гуру 28.02.12✎ 11:31 | 
        (9) а разве не "будет сообщение об ошибке «Автоматический режим блокировки недопустим в этой транзакции»"?     | |||
| 16
    
        alxbzm 28.02.12✎ 11:31 | 
        +(10) хотя зависит от настройки конфигурации: если Управляемый и автоматический - то да, если управляемый - то пофигу че там у регистра установлено - для всех объектов упр. режим
  (12) - да - пардоньте еще от субд зависит | |||
| 17
    
        Reset 28.02.12✎ 11:32 | 
        (9) Произойдет ошибка времени выполнения     | |||
| 18
    
        Господин ПЖ 28.02.12✎ 11:32 | 
        вся таблица блокируется либо когда в таблице не было данных по этому регистратору (не зря в типовых это обходится извращенным способом) либо блокировок очень много     | |||
| 19
    
        Ненавижу 1С гуру 28.02.12✎ 11:33 | 
        (18) имхо, не по регистратору, а по набору измерений     | |||
| 20
    
        Господин ПЖ 28.02.12✎ 11:33 | 
        (19) ну да... скорее так     | |||
| 21
    
        shamannk 28.02.12✎ 11:37 | 
        Режим: Автоматический и управляемый. Клиент серверный вариант sql 2008     | |||
| 22
    
        Господин ПЖ 28.02.12✎ 11:41 | 
        автомат и упр. отличается разной степенью изоляции транзакций, длительностью блокировок и соответственно центром ответственности за блокировки. В первом блокирует скуль, во втором блокировками заведует сервер приложения 1С     | |||
| 23
    
        shamannk 28.02.12✎ 11:43 | 
        (22) С такими параметрами (21) и если как в (9) Произойдет полная блокировка?     | |||
| 24
    
        alxbzm 28.02.12✎ 11:45 | 
        (23) по-моему при таких настройках произойдет ошибка из (15)     | |||
| 25
    
        shamannk 28.02.12✎ 11:47 | 
        (24) Ошибка происходит "Конфликт блокировок при выполнении транзакции" И непонятно толи наткнулось на блокировку всего регистра либо каких то строк.     | |||
| 26
    
        Господин ПЖ 28.02.12✎ 11:50 | 
        (25) sp_lock все знает...     | |||
| 27
    
        Рэйв 28.02.12✎ 11:51 | 
        (26)Если начинаешь управляемую блокировку у всех участников должен быть отключен автоматический режим блокировки.     | |||
| 28
    
        shamannk 28.02.12✎ 11:58 | 
        Последний вопрос: управляемые режим (т.е. где возможно блокировать не весь регистр) возможен только тогда когда у регистра стоит управляемый режим?     | |||
| 29
    
        Господин ПЖ 28.02.12✎ 12:00 | 
        (28) не блокируется таблица целиком и в автомате... если конечно у вас не 150 измерений и вы там по 150-му фильтруете...     | |||
| 30
    
        Alex_MA 28.02.12✎ 12:01 | 
        (0)В автоматическом режиме блокируется все (Но не вся таблица, а конкретные записи). Если запрос без ДЛЯ ИЗМЕНЕНИЯ - то накладывается разд. блокировка, если с ДЛЯ ИЗМЕНЕНИЯ то исключительная.
  блокировка действует только в рамках одной транзакции, вложенные транзакции в 1С не существуют | |||
| 31
    
        Господин ПЖ 28.02.12✎ 12:04 | 
        >Если запрос без ДЛЯ ИЗМЕНЕНИЯ - то накладывается разд. блокировка, если с ДЛЯ ИЗМЕНЕНИЯ то исключительная
  не исключительная а update >Но не вся таблица, а конкретные записи или диапазоны | |||
| 32
    
        shamannk 28.02.12✎ 12:08 | 
        (30)Т.е. такая блокировка рег. свед. заблокирут лишь те записи где измерение счет равно МойСчет  ЭлементБлокировки.УстановитьЗначение("Счет", МойСчет);
  ? | |||
| 33
    
        Alex_MA 28.02.12✎ 12:10 | 
        (32)да, в данном случае блокировка произойдет по измерениям регистра, по конкретному счету     | |||
| 34
    
        shamannk 28.02.12✎ 12:13 | 
        (33)ЭлементБлокировки.УстановитьЗначение("Счет", МойСчет);
  ЭлементБлокировки.УстановитьЗначение("Аналитика1", Аналитика1); А если два измерения то сработают по логике "И" ? | |||
| 35
    
        Alex_MA 28.02.12✎ 12:16 | 
        в принципе разница Автоматической от Управляемой блокировки заключается в том (я говору про уровень 1С), что при Автоматической блокировки блокируется все, до окончания транзакции, а в управляемом данные (считываемые или изменяемые) отпускаются до окончания транзакции - таким образом параллельность работы возрастает     | |||
| 36
    
        Господин ПЖ 28.02.12✎ 12:16 | 
        всегда было интересно как эта каша будет работать вместе - упр. и авто....     | |||
| 37
    
        Alex_MA 28.02.12✎ 12:17 | 
        (34)да     | |||
| 38
    
        Stepa86 28.02.12✎ 12:18 | 
        не знаю точно как лочатся записи регистра в транзакции, но как то напоролся на дедлок, где в одной ветке был запрос к справочнику типа выбрать спр.Ссылка Из Справочник.НебольшойТАкойСправочник КАК спр ГДЕ спр.некотороеПоле = &ЧоМнеНужно
  этот запрос лочил всю таблицу, а не только то, что отбирал в итоге, причем лочил скуль, а не 1Ска (вродеб). После включения в индекс этого поля все дедлоки ушли | |||
| 39
    
        Alex_MA 28.02.12✎ 12:18 | 
        (36)нафиг этот режим     | |||
| 40
    
        Господин ПЖ 28.02.12✎ 12:20 | 
        (38) ну тут скорее всего ничего тайного не было... вместо seek было scantable в плане выполнения, т.к. индекса нет, скуль лупит по всей таблице     | |||
| 41
    
        Господин ПЖ 28.02.12✎ 12:22 | 
        (39) это точно.     | |||
| 42
    
        Alex_MA 28.02.12✎ 12:22 | 
        (38)deadlock - ошибка кода конфигурации. Видимо кто то еще блокировал эти записи и твоя транзакция была выбрана жертвой менеджера блокировок     | |||
| 43
    
        Stepa86 28.02.12✎ 12:25 | 
        (40) я так то думал, что он не будет лочить то, что в выборку не попало, даже при скане
  (42) другими потоками было добавление нового элемента по другим измерениям | |||
| 44
    
        Alex_MA 28.02.12✎ 12:25 | 
        (38)у нас одно время были страшные блокировки в ИБ, превышено время ожидания на блокировке. ЦУПом посмотрел - главной проблемой являлось время выполнения запросов. Сделали переиндексацию ИБ и блокировки как рукой сняло. Выполняйте регламентные операции на СУБД.     | |||
| 45
    
        Alex_MA 28.02.12✎ 12:28 | 
        и еще много косяков со стороны платформы, достаточно почитать описание ошибок 1С, я думаю это не все "косяки"     | |||
| 46
    
        shamannk 28.02.12✎ 12:28 | 
        набор=РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
  набор.Отбор.Регистратор.Установить(Объект.Ссылка); набор.Записать(); Такая конструкция заблокирует весь регистр? (регистр в автомате) | |||
| 47
    
        Господин ПЖ 28.02.12✎ 12:34 | 
        (43) он может лочить диапазон... как минимум значение-1/значение/значение+1
  если идет отбор по регистратору - лочится все записи той же даты (если я не вру)... | |||
| 48
    
        Alex_MA 28.02.12✎ 12:34 | 
        (46)заблокируются записи только по регистратору     | |||
| 49
    
        shamannk 28.02.12✎ 12:37 | 
        (48) Если даже это не в транзакции используется?     | |||
| 50
    
        Alex_MA 28.02.12✎ 13:16 | 
        (49)без транзакции не может быть транзакционной блокировки.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |