|
НачатьТранзакцию() | ☑ | ||
---|---|---|---|---|
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)без транзакции не может быть транзакционной блокировки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |