Имя: Пароль:
1C
 
SQL Tablockx -> rowlock
Ø
0 vbuoc
 
16.12.04
14:35
hi, слыхал где-то, что если в хран.пр-ах. заменить Tablockx на rowlock - то проблема с блокировками будет практически решена
Эт чо правда что-ли??
1 Меланхоличный ворон
 
16.12.04
14:36
Правда, но неполная: если сделать только это, то проблемы только добавятся
2 Дяпти
 
16.12.04
14:37
А то! Все гениальное просто!
3 vbuoc
 
16.12.04
14:38
(2) C чего бы это?
4 vbuoc
 
16.12.04
14:40
5 Дяпти
 
16.12.04
14:41
А вот давайте МуМу спросим:
МуМу! А если у меня в конфе никаких последовательностей нету и движения документа зависят исключительно от данных самого документа - мне можно убрать tablockx holdlock и я решу все проблемы с блокировками не нажив других?
6 vbuoc
 
16.12.04
14:44
да причем тут последовательности?
7 МуМу
 
16.12.04
14:45
То 5. Зависит от конфы. В описанном случае проблем с грязным чтением не будет но почти однозначно будут деадлоки. Собственно говоря не раз уже проходил через такие конфигурации и видел к чему это приводило.Хотя и тут бывают исключение. Бухгалтерские конфигурации если работать в текущих периодах то этой проблемы подвержены меньше т.к. данные агрегируются только при работе задним числом - следовательно взаимных блокировок меньше.
8 vbuoc
 
16.12.04
14:47
не понимаю- ведь я всего лишь указываю скл чтобы тот блокировал тока строку таблицы а не ее саму
9 Дяпти
 
16.12.04
14:49
(8) этого оказывается недостаточно.
10 Дяпти
 
16.12.04
14:51
(7) Спасибо МуМу :-)
11 2Green
 
16.12.04
14:54
 МуМу, разъясните пожалуйста понятие "данные агрегируются"
12 МуМу
 
16.12.04
14:55
ЧТо 8. то бы понимать советую сначала на тему деадлоков почитать что это такое. Ну и на тему грязного чтения.
13 vbuoc
 
16.12.04
15:04
Удалить механизм блокировок можно путем изменения хранимых процедур, через которые 1С проверяют таблицы на блокировки. А точнее, удалить хинты на блокировку таблиц.
Например, в хранимой процедуре _1 sp __1 SJOURN _ TLockX в конструкции select @i=1 from _1SJOURN(TABLOCKX HOLDLOCK) where 0=1 необходимо удалить TABLOCKX HOLDLOCK.
Также необходимо удалить соответствующие хинты(подсказки блокировки) в остальных таблицах относящихся к документам. Если этого не сделать то будут возникать deadlock -и – взаимоблокировки транзакций на уровне SQL server .
14 МуМу
 
16.12.04
15:05
То 11.
Под агрегацией подразумевается денормализация данных-в данном случае хранение в нескольких таблицах. Отдельно движения и отдельно остатки и корресподенции.
15 Меланхоличный ворон
 
16.12.04
15:07
(13) Модер может напомнить Раздел 2, пункт 9 правил. Кроме того, в таких случаях в приличном обществе нужно указывать авторство.
16 МуМу
 
16.12.04
15:09
То 13. Ну а что?Все логично. Таким образом мы снимаем монопольные блокировки но блокировки от MSSQL остаются в любом случае. В случае агрегаций они являются конфликтным множеством на которых и могут потенциально возникать деадлоки.
17 Железяка
 
16.12.04
15:10
Напоминаю. Раздел 2 п.9 правил:"Не следует копировать в ветки материалы каких-то веб-страниц. Лучше просто дайте на них ссылку"
18 vbuoc
 
16.12.04
15:14
скюз ми но вроде давал: vbuoc
4 - 16.12.2004 - 14:40 http://www.softpoint.ru/article.php?id=1
19 vbuoc
 
16.12.04
15:16
(16) понял. Спасибо!
Основная теорема систематики: Новые системы плодят новые проблемы.