|
Блокирование регистра расчета на запись (блокировка СУБД) | ☑ | ||
---|---|---|---|---|
0
abc
24.02.21
✎
09:53
|
Добрый день!
Подскажите, как идет работа с Регистром расчета в режиме совместимости с 8.2. Дано: база клиент- серверная, Управляемые блокировки СУБД: SQL, 8.3 в режиме совместимости с 8.2 Проводятся 2 независимых по данным документа в одном периоде. Чтения данных нет. Только запись. Возникает блокировка СУБД по тайм- ауту. В чем причина и как ее устранить? p.s. в режиме совместимости 8.3 проблемы нет. Но нужно понять проблему 8.2 и найти решение именно с режимом совместимости с 8.2 Help please! |
|||
1
Почему 1С
24.02.21
✎
11:31
|
||||
2
timurhv
24.02.21
✎
11:41
|
(0) поставьте PostgreSQL, там такой проблемы не должно быть. В MSSQL вся таблица блокируется по всем организациям, хоть и указаны блокируемые данные. Тестировал давно для ЗУП, в итоге из MSSQL сделали версионник http://catalog.mista.ru/1c/articles/91879/
|
|||
3
timurhv
24.02.21
✎
11:43
|
(2) да и при перезагрузке службы сервера 1С надо переключать повторно
|
|||
4
Почему 1С
24.02.21
✎
11:46
|
(2) Смелое утверждение, с чего бы это MSSQL сервер блокировал всю таблицу, если этого не указали явно кривые ручки разработчика
|
|||
5
timurhv
24.02.21
✎
11:50
|
(4) поставьте ЗУП 2.5 в режиме совместимости 8.2, нажмите рассчитать по организации 1, поставьте точку останова, потом нажмите рассчитать для организации 2.
Потом выставьте 8.3, либо ЗУП 3.1 и убедитесь лично. |
|||
6
Itmaint
24.02.21
✎
11:53
|
(4) Вы немного не в теме. (2) не совсем прав, но сказал путь подсказал правильный
|
|||
7
d4rkmesa
24.02.21
✎
11:56
|
(0) http://catalog.mista.ru/1c/articles/629017/
Тут тоже есть абзац на эту тему, искать по "Ошибка платформы – скан индекса регистра расчета". |
|||
8
Почему 1С
24.02.21
✎
12:30
|
(6) На сколько я понял это проблема не MSSQL, а 1с платформы или я не прав?
|
|||
9
abc
24.02.21
✎
12:42
|
(2) - самое интересное, но на PostgreSQL та же проблема
(7) - и как это обходить? попробовала для таблицы записей регистра в менеджмент студио (в целях эксперимента) удалить все индексы и создать свой кластерный по полям период, регистратор, запись (аналогично существующему). Попробовала создать кластреный индекс по полям период, регистратор, запись, организация, сотрудник. Но в структуре метаданных отображаются прежние изначальные индексы... Я новичок в этом деле- почему новые индексы не применились? |
|||
10
ДенисЧ
24.02.21
✎
12:45
|
(9) "в структуре метаданных отображаются прежние изначальные индексы"
Это в какой? В 1с? А добавляла в SQL? "Я новичок в этом деле" - поэтому оставь это дело (свои индексы добавлять) 1с:экспертам |
|||
11
abc
24.02.21
✎
12:50
|
(9) - добавляла в таблице SQL
структуру хранения метаданных смотрю из 1С- она разве не должна отображать актуальные изменения в индексах? кроме как абзаца из статьи http://catalog.mista.ru/1c/articles/629017/, никакой информации об особенностях работы с таблицам регистров расчета нигде информацию не нашла |
|||
12
abc
24.02.21
✎
12:51
|
(9) каково ваше решение? как 1с:эксперта :)
|
|||
13
ДенисЧ
24.02.21
✎
12:56
|
(12) "в режиме совместимости 8.3 проблемы нет"
Всё уже украдено до нас. |
|||
14
ДенисЧ
24.02.21
✎
12:58
|
(11) Нет. У 1с своя система индексов. Которую 1c проецирует в скуль. Но не наоборот.
|
|||
15
d4rkmesa
24.02.21
✎
13:04
|
(9) Индексы лучше смотреть в Management Studio. В базе sql - Tables - [Выбранная таблица] - Indexes.
|
|||
16
abc
24.02.21
✎
13:08
|
(13) хотелось бы побороть это в режиме совместимости с 8.2
Из статьи: "Поскольку у регистра расчета нет кластерного индекса (там есть только некластерный), пришлось этот некластерный индекс деактивировать и создать аналогичный, но кластерный. Все. После этого индекс стал использоваться, и все стало замечательно. Вот такой получился обход ситуации" Поэтому (9) пошла в Management Studio. В базе sql - Tables - [Выбранная таблица] - Indexes. Удалила существующие там "не кластерные" индексы и создала аналогичные, но кластерные. в Management Studio все применилось.. вроде как. А если смотреть на структуру индексов из 1С- все индексы остались прежними. Что я не доделала? |
|||
17
d4rkmesa
24.02.21
✎
13:11
|
(16) Что вы имеете в виду под "на структуру индексов из 1С" ? Скиньте скрин. И, я бы начал с перевода базы на RСSI, а не индексов.
|
|||
18
ДенисЧ
24.02.21
✎
13:12
|
(16) "Что я не доделала"
Недочитала (14) |
|||
19
abc
24.02.21
✎
13:12
|
(14) У 1с своя система индексов. Которую 1c проецирует в скуль. Но можно и средствами Management Studio добавить свои индексы. Хотя бы на определенное время.
Вопрос только в том- почему это, как бы, не сработало |
|||
20
abc
24.02.21
✎
13:13
|
(17) RСSI - решит проблему на чтение, а у меня- запись
|
|||
21
abc
24.02.21
✎
13:26
|
Имя таблицы: РегистрРасчета.Основной
Имя таблицы SQL: _CRg1807 Индексы: _CRg1807_ByPRecorder_TRN Поле индекса: _Period, _RecorderRRef, _LineNo То есть, "родной" индекс по периоду, ссылке на документ, записи. Должна работать параллельная запись. Удалила "родной" индекс, сделала в Management Studio свой Кластерный, аналогичный этому. Проблема не ушла, в 1С отображается прежний индекс. Добавила в свой кластерный индекс поля "_Fld1808RRef" (Организация) и "_Fld1809" (Сотрудник). в 1С отображается, по-прежнему, "родной" индекс, которого в Management Studio уже нет. |
|||
22
Очевидно
24.02.21
✎
13:28
|
(9) (16) (21) а с чего вы взяли что новые индексы должны быть видны из 1С ?
1С об них ничего не знает вроде как ... там информация берётся из записанных структур таблицы Config на скуле. Вопрос: так вы в итоге попробовали RCSI ? потому как в 8.3 без режима совместимости как раз он и используется, а в 8.2 его как опции не было. |
|||
23
ДенисЧ
24.02.21
✎
13:28
|
Я сейчас скажу вещь, которая может шокировать начинающих ломальщиков индексов...
С блокировками в клиент-серверной 1с работает сервер 1с. А ему плевать, что там написано в скуль-база, что туда шаловливыми ручонками понапихано... |
|||
24
timurhv
24.02.21
✎
13:29
|
(23) = с управляемыми блокировками
|
|||
25
abc
24.02.21
✎
13:31
|
у меня не на блокировках 1С таймаут, а на блокировке СУБД
|
|||
26
abc
24.02.21
✎
13:33
|
у меня ничего не читается
RCSI работает, когда идет чтение. Запросом, например... А мне ничего читать не нужно. Нет блокировки на чтении. Возникает блокировка СУБД в момент записи движений в регистр |
|||
27
Очевидно
24.02.21
✎
13:34
|
(23) есть такое, поэтому с большой долей вероятности таймаут будет на стороне 1С ... если не на 1С тогда или эскалация блокировок, или таймаут в 1С выставлен на большее значение чем в скуле
|
|||
28
abc
24.02.21
✎
13:36
|
есть блокировки 1С и есть блокировки СУБД
у меня- блокировка СУБД как работает SQL с таблицей регистра расчетов в режиме совместимости 8.2? неужели нет решения, кроме как отказ от совместимости с 8.2? |
|||
29
abc
24.02.21
✎
13:40
|
какая эскалация, если один документ сделает 1 запись и второй документ сделает 1 запись?
причем работает оптимизация платформы, если данные в документах не менялись, то и фактической записи в регистры быть не должно.. только с регистром расчета так- в чем его особенность? |
|||
30
d4rkmesa
24.02.21
✎
13:41
|
(21) Галочки "Индексировать" в 1С - берутся из самой конфигурации, это то, к чему в итоге "стремится" конфигурация. Если проблема та же и вы ее четко фиксируете, надо как то дальше смотреть. К примеру, посмотреть какие индексы создаются платформой при повышении режима совместимости до 8.3, может там состав полей отличается.
|
|||
31
ДенисЧ
24.02.21
✎
13:44
|
В статье же ясно написано...
"Еще одна проблема регистра расчета проявляется при чтении и заключается в том, что платформенный запрос, который читает данные из регистра расчета, тоже сканирует индекс. Но здесь уже помогает именно включение либо Read Committed Snapshot, либо, если у вас 8.3, вы можете убрать режим совместимости с 8.2, тогда этой проблемы у вас уже не будет." Но мы же жители крайнего Севера, мы не читатели... |
|||
32
abc
24.02.21
✎
14:19
|
(30) При режиме совместимости с 8.2 в структуре метаданных 1С присутствует Основная таблица регистра расчетов "РегистрРасчета.Основной" и таблица "ПериодыДействия" "РегистрРасчета.Основной.ФактическийПериодДействия". В режиме 8.3 - остается только Основная таблица регистра расчетов "РегистрРасчета.Основной".
Если смотреть структуру индексов в Management Studio, то она одинакова- и в режиме совместимости 8.2 и в режиме совместимости 8.3. Если в 1С дополнительно проиндексировать поля Организация и Сотрудник- ошибка блокировки в режиме совместимости 8.2 не уходит. Пробовала. |
|||
33
rphosts
24.02.21
✎
14:26
|
(16) >Удалила существующие там "не кластерные" индексы и создала аналогичные, но кластерные
Не лги! Больше одного кластерного индекса для таблице быть не может по определению! Кластерный индекс это симбиоз индекса с таблицей |
|||
34
rphosts
24.02.21
✎
14:34
|
Что там в технологическом журнале? По какому диапазону блокируется у СУБД?
Перейти на постгри или хотя-бы врубить у сиквела RCSI уже предлагали? |
|||
35
abc
24.02.21
✎
14:34
|
(33) имела в виду- для двух таблиц [dbo].[_CRg1807] и [dbo].[_CRgActP1811]
|
|||
36
abc
24.02.21
✎
14:35
|
(34) на постгри то же самое
RCSI - спасительно только при блокировке при чтении |
|||
37
rphosts
24.02.21
✎
14:37
|
(36) проверяла?
|
|||
38
rphosts
24.02.21
✎
14:39
|
Да, один момент... После операций по модификации индексов, чтобы уж наверняка нужно очистить процедурный кэш... Он какбэ должен самоочищаться, но как-то иногда порой....
|
|||
39
abc
24.02.21
✎
14:51
|
(38) - параметр "изоляция моментальных снимков read comment включена" = "True"
|
|||
40
DrZombi
гуру
24.02.21
✎
15:13
|
(0) Все нормально там с блокировками.
Вы во всех объектах, участвующих при проведении документа, выставили "Управляемая блокировка"? ...Если вы выставили на самой конфигурации "Управляемые блокировки", то это только для новых документов работает... :) В общем нам тут не видно, как вы тама настроили конфигурацию... |
|||
41
abc
24.02.21
✎
15:23
|
(40) для конфы установлен режим блокировок "Управляемый"
во всех объектах, участвующих при проведении документа, выставлена "Управляемая блокировка" p.s. если для всей конфы установлена Управляемая блокировка, то она для все объектов управляемая совмещать можно только при режиме для конфы "Автоматический и управляемый" |
|||
42
Почему 1С
24.02.21
✎
15:32
|
(39)
SELECT name, snapshot_isolation_state, snapshot_isolation_state_desc, is_read_committed_snapshot_on FROM sys.databases и snapshot_isolation_state и is_read_committed_snapshot_on у вас 1? |
|||
43
Itmaint
24.02.21
✎
17:11
|
(33)Яростно ++++++++
ТС реально не понимает тему. (0) Читаем до умопомрачения например https://open-budget.ru/public/629017/ После этого (наверное это будет ждля вас оптимально, если не умеете парсить логи ТЖ) ставите ЦУП. Смотрите анализ запросов и анализ ожидания на блокировках. |
|||
44
H A D G E H O G s
24.02.21
✎
17:28
|
Даже интересно.
Автор, если у тебя sql и безгемморойный доступ в enterprise Напиши на [email protected] |
|||
45
Вафель
24.02.21
✎
17:41
|
в регистре расчета на одной из таблиц нет кластерного индекса.
лет 5 назад такой вопрос решал |
|||
46
Вафель
24.02.21
✎
17:44
|
хотя конечно одного индекса недостаточно
|
|||
47
abc
24.02.21
✎
17:57
|
Еще раз проверила:
При режиме совместимости с 8.2 в структуре метаданных 1С присутствует Основная таблица регистра расчетов "РегистрРасчета.Основной" и таблица "ПериодыДействия" "РегистрРасчета.Основной.ФактическийПериодДействия". В режиме 8.3 - остается только Основная таблица регистра расчетов "РегистрРасчета.Основной". Если смотреть структуру индексов в Management Studio, то она одинакова- и в режиме совместимости 8.2 и в режиме совместимости 8.3. И в 8.2 и в 8.3 уже присутствует кластерный индекс (поля ссылка, номер записи) При реструктуризации после изменения режима совместимости- вносятся изменения в таблицу Плана видов расчета. Но не пойму, как это может влиять.. Проблема с таблицей "ФактическийПериодДействия"? но там есть регистратор в индексе... Не должно быть проблемы |
|||
48
Itmaint
24.02.21
✎
18:02
|
(45) Кстати, а сейчас косяк косяк в платформе, что у оборотного РН у виртуальной таблицы обороты нет обычного индекса по первому измерению...
(44) Если поможешь ТС, то расскажи плиз. Мое предположение, что блокировка скорее всего на побочном РС типа "ПериодическиеНачисления" или каких-то РН. (47) Почему вы решили, что проблема именно с регистром расчета??? |
|||
49
ДенисЧ
24.02.21
✎
18:09
|
(48) Индекс у виртуальной таблицы? О_о
|
|||
50
abc
24.02.21
✎
18:09
|
похоже, в 8.2 накладывается блокировка на Вид расчета..
exec sp_executesql N'INSERT INTO #tt10 WITH(TABLOCK) (_CalcKindRRef) SELECT DISTINCT T1._CalcKindRRef FROM dbo._CRg1807 T1 WHERE T1._RecorderRRef = P1',N'P1 varbinary(16)',0x83B9001C428537A411E5AAFA3D70B658 и потом exec sp_executesql N'INSERT INTO #tt12 WITH(TABLOCK) (_RecorderRRef, _LineNo, _CalcKindRRef, _ActionPeriod, _Period, _APDateFrom, _APDateTill, _Storno, _Fld1808RRef, _Fld1809) SELECT DISTINCT T10._RecorderRRef, T10._LineNo, T10._CalcKindRRef, T10._ActionPeriod, T10._Period, T10._APDateFrom, T10._APDateTill, T10._Storno, T10._Fld1808RRef, T10._Fld1809 FROM dbo._CRg1807 T9 INNER JOIN dbo._CRg1807 T10 ON T10._Fld1808RRef = T9._Fld1808RRef AND T10._Fld1809 = T9._Fld1809 AND T10._ActionPeriod = T9._ActionPeriod AND NOT ((T10._RecorderRRef = T9._RecorderRRef AND T10._LineNo = T9._LineNo)) LEFT OUTER JOIN #tt11 T11 WITH(NOLOCK) ON T11._IDRRef = T9._CalcKindRRef AND T11._LINKEDRRef = T10._CalcKindRRef WHERE T9._RecorderRRef = P1 AND T10._Active = 0x01 AND ((T9._RecorderRRef = T10._RecorderRRef AND T9._LineNo = T10._LineNo) OR T9._CalcKindRRef = T10._CalcKindRRef OR T11._IDRRef IS NOT NULL)',N'P1 varbinary(16)',0x83B9001C428537A411E5AAFA3D70B658 с ожиданием почти 20 секунд |
|||
51
abc
24.02.21
✎
18:19
|
_CalcKindRRef - это вид расчета
|
|||
52
Itmaint
24.02.21
✎
18:24
|
(49) херь я сморозил... имел ввиду таблицу итогов.
|
|||
53
fisher
24.02.21
✎
18:27
|
(47) То есть в 8.3 избавились от вспомогательных физических таблиц и теперь все "на лету" считают? Интересно...
|
|||
54
Itmaint
24.02.21
✎
18:34
|
(50) Давайте для начала вы дмвшкой sys.dm_tran_locks посмотрите...
Вот например пример ее использования http://catalog.mista.ru/1c/articles/707333/ |
|||
55
timurhv
24.02.21
✎
19:05
|
(48) всегда так было, исправят
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |