|
очень частые блокировки транзакций | ☑ | ||
---|---|---|---|---|
0
mnail1979
14.04.12
✎
08:30
|
Здравствуйте, уважаемые профессионалы.
1С 8.1 УПП. Одновременных пользователей 15. Очень часто выходят взаимоблокировки транзакций. ЦУП у меня нет. Как понять и исправить эту проблему? |
|||
1
DrShad
14.04.12
✎
08:33
|
какая таблица блокируется?
|
|||
2
Klesk
14.04.12
✎
08:36
|
файловая или какая?
|
|||
3
mnail1979
14.04.12
✎
08:39
|
(2) клиент сервер. SQL server 2008 R2
|
|||
4
mnail1979
14.04.12
✎
08:41
|
(1) а как понять какая блокируется
|
|||
5
mnail1979
14.04.12
✎
08:44
|
Ошибка при вызове метода контекста (Выполнить). Ошибка выполнения запроса "конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server. Транзакция (идентификатор процесса 62) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно. Это при проведении документа реализации. |
|||
6
МихаилМ
14.04.12
✎
08:50
|
настройте тех.журнал на сбор информации по блокировкам
|
|||
7
Один С
14.04.12
✎
09:00
|
15 пользователей и частые блокировки... много думал...
|
|||
8
mnail1979
14.04.12
✎
09:04
|
(6) а как это. Я новичок в этом деле. Подскажете?
|
|||
9
Живой Ископаемый
14.04.12
✎
09:05
|
(6) в 8.1 уже был ТЖ?
|
|||
10
МихаилМ
14.04.12
✎
09:09
|
(9)
да. был. |
|||
11
mnail1979
14.04.12
✎
09:18
|
можете по шагам расписать, что мне нужно делать. Я читал разные статьи, где советовали переходить с автоматического режима на управляемый и автоматический и т.д. Но по шагам было бы лучше.
|
|||
12
МихаилМ
14.04.12
✎
09:25
|
(11)
пришло время почитать руководство администратора 1с. а еще лучше руководство разработчика и администратора ms sql. сдаётся мне: Вы не владеете базовой терминологией, так что пошаговая инструкция Вам не положена. |
|||
13
mnail1979
14.04.12
✎
09:35
|
:(
|
|||
14
mnail1979
14.04.12
✎
09:36
|
я работал на оракле. С MS SQL я новичок
|
|||
15
mnail1979
14.04.12
✎
09:39
|
ТЖ мне поможет, или нужен еще обязательно ЦУП?
|
|||
16
МихаилМ
14.04.12
✎
10:15
|
тж поможет . цуп использует тж.
после мониторинга не забудте отключить логирование тж. |
|||
17
mnail1979
14.04.12
✎
11:53
|
прочитал статью http://1cexpo.ru/metodiki/31-analiz-i-ustranenie-vzaimoblokirovok.html#case1
На одном из запросов решил попробовать параметр ДЛЯ ИЗМЕНЕНИЯ. Скажите, плиз, есть ли у него недостатки. Или его можно лепить где попало. |
|||
18
Aleksey
14.04.12
✎
12:04
|
(7) А что думать. У меня блокировки на равном месте иной раз выскакивают. Т.е. сижу в базе один (типовая БП), никого нет. Запустил проведения - и бац, не могу провести ... блокировка.
Так что подпишусь на тему, сам хотел создать, да всё руки не доходят. |
|||
19
Kraft
14.04.12
✎
12:20
|
не в тему, но отпишу тут. В последнее время (после перехода на 8.2.15) стали происходить интересные глюки с блокировками. При попытке что-то сделать, например провести документ, ругается, что объект уже открыт и изменяется другим пользователем с таким-то номером сеанса. Так вот дело в том, что такого сеанса уже давно нет, и пользователь (на которого ссылается система) новых сеансов не открывал. Рестарт сервера 1с не помогает (!!!). Ситуацию спасает лишь рестарт ms sql. Такая ситуация проявлялась уже 2 раза за 2 месяца.
|
|||
20
Aleksey
14.04.12
✎
12:24
|
(19) Во-во, до 8.2.15 тоже небыло блокировок в чистом поле. Т.е. запускаешь на ночь перепроводку и к утру готовый результат. Сейчас - нет гарантии
|
|||
21
Wern
14.04.12
✎
12:24
|
(17) Прочитал что при зубной боли помогает шалфей и решил все болезни лечить им? Проблему надо решать, а не лепить что попало и где попало.
|
|||
22
Wern
14.04.12
✎
12:26
|
(20) фоновые задания смотрите, только они могут создать блокировку на одном пользователе.
|
|||
23
демотиватор
14.04.12
✎
12:28
|
(0)что делают эти пользователи?
|
|||
24
Aleksey
14.04.12
✎
12:34
|
(22) Обычно фоновые в ЖР пишутся. А так из фоновых только Регламентное задание. Обновление индекса полнотекстового поиска
|
|||
25
Один С
14.04.12
✎
16:22
|
ну дык запретите регламенты на сервере, да посмотрите что получится..
|
|||
26
aspirator23
14.04.12
✎
17:34
|
Расскажи о своем sql сервере. Как он устроен?
|
|||
27
mnail1979
14.04.12
✎
18:42
|
(26) Железо?
|
|||
28
Гот
14.04.12
✎
19:07
|
(27) Кальций.
В модуле документа реализации Через строку вставь Сообщить("Дошел до строки " + НомерСтроки); При проведении все, что после нужной строки - удали. Обнови конфигурацию - не будет блокировок. Гарантирую. |
|||
29
Гот
14.04.12
✎
19:08
|
Номер строки - в смысле номер строки текста модуля.
|
|||
30
mnail1979
14.04.12
✎
21:28
|
(29) как можно просто удалить. Раз написано - значит нужно...
|
|||
31
mnail1979
16.04.12
✎
16:11
|
вот скриншот: http://s019.radikal.ru/i644/1204/cd/dc49acf3e2f4.jpg
Подскажите, как решить взаимоблокировку |
|||
32
Aleksey
16.04.12
✎
16:19
|
УРИБ нет? А то у меня оказалось куча почек (остатки былой роскоши) с еще большей кучей зарегестророванных изменений в не (по 3-4 ляма в каждой почки). И из-за этого выскакивали блокировки
|
|||
33
mnail1979
16.04.12
✎
16:30
|
(32) не понял
|
|||
34
Зеленый Кот
16.04.12
✎
16:39
|
>> куча почек?
надолго задумался... |
|||
35
Stepa86
16.04.12
✎
16:49
|
(31) а давно в УПП есть документ ЗакрытиеРейса?
|
|||
36
mnail1979
16.04.12
✎
16:50
|
(35) это УПП с большими дописками
|
|||
37
Stepa86
16.04.12
✎
16:51
|
(36) вот эти дописки и делают дедлоки, обращайся к авторам
|
|||
38
mnail1979
16.04.12
✎
16:53
|
К сожалению к авторам обратиться не могу. Сам потихоньку им становлюсь. Поэтому нужно разобраться самому
|
|||
39
Aleksey
16.04.12
✎
16:55
|
(33) Что такое УРИБ и План обменов не знаешь? Или что не понятно?
|
|||
40
Aleksey
16.04.12
✎
16:55
|
(34) А как их назвать?
|
|||
41
mnail1979
16.04.12
✎
16:56
|
В документе есть запрос, который читает данные с регистранакопления.
Был такой запрос: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.СерияНоменклатуры, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, Склад = &СкладМашина) КАК ТоварыНаСкладахОстатки | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.СерияНоменклатуры"; Запрос.УстановитьПараметр("СкладМашина",СкладОтправитель); Запрос.УстановитьПараметр("МоментВремени",МоментВремени()); Возврат Запрос.Выполнить().Выбрать(); |
|||
42
Aleksey
16.04.12
✎
16:57
|
(37) Конечно тебе же с места виднее, вот так сразу глянул на кофейную гущу и сразу видно - что дописывал олень, он виноват. И главное так авторитетно и безапелляционно заявлешь об этом, как будто код видел
|
|||
43
mnail1979
16.04.12
✎
16:57
|
возможно (точно не могу утверждать) после того, как я его изменил, это все и началось.
Вот измененный вариант: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладах.Номенклатура, | ТоварыНаСкладах.ХарактеристикаНоменклатуры, | ТоварыНаСкладах.СерияНоменклатуры, | СУММА( | ВЫБОР | КОГДА ТоварыНаСкладах.ВидДвижения=ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ТоварыНаСкладах.Количество | ИНАЧЕ (-1)*ТоварыНаСкладах.Количество | КОНЕЦ | ) КАК КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах |ГДЕ | ТоварыНаСкладах.Регистратор.Рейс = &Рейс | И ТоварыНаСкладах.Склад = &СкладМашина |СГРУППИРОВАТЬ ПО | ТоварыНаСкладах.Номенклатура, | ТоварыНаСкладах.ХарактеристикаНоменклатуры, | ТоварыНаСкладах.СерияНоменклатуры |ИМЕЮЩИЕ |СУММА( | ВЫБОР | КОГДА ТоварыНаСкладах.ВидДвижения=ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ТоварыНаСкладах.Количество | ИНАЧЕ (-1)*ТоварыНаСкладах.Количество | КОНЕЦ | )<>0 | "; Запрос.УстановитьПараметр("СкладМашина",СкладОтправитель); Запрос.УстановитьПараметр("Рейс",Рейс); Возврат Запрос.Выполнить().Выбрать(); |
|||
44
Stepa86
16.04.12
✎
17:26
|
(42) а разве из (31) не очевидно? и чот я сомневаюсь, что типовая чистая УПП в дедлоки падает при 15 пользователях
|
|||
45
Aleksey
16.04.12
✎
17:32
|
(44) Я могу тебе и в типовой БП с 3-мя пользователями дедлоки сделать. И что?
|
|||
46
Stepa86
16.04.12
✎
17:33
|
(43) попробуй поле Рейс проиндексировать у регистратора... хотя так то херого, что обращаешся к реальной таблице
(45) и скриншот при этом от ЦУПа покажешь, где дедлок на доработку завязан? |
|||
47
mnail1979
16.04.12
✎
21:03
|
(46) может я запрос не правильно написал. Как видите, раньше все было через товарынаскладах.остатки, а я переделал на просто новарынаскладах, чтобы выйти на рейс через регистратор. Может надо как то по другому. Я новичок в 1С. Можно ли как то используя ВТ остатки выйти в данном случае на рейс, или добавить в этот регистр еще один реквизит "рейс"
|
|||
48
mnail1979
16.04.12
✎
21:15
|
прикол в следующем. Кто то другой проводит документ реализация. В это момент запускается запрос другим пользователем, который я указал выше. И получается взаимоблокировка, так как почему то мой запрос через регистр выходит тоже на документ реализации. Вот и думаю, если все же сделать запрос через ВТ остатки, путь запроса будет таким же или нет.
|
|||
49
МихаилМ
16.04.12
✎
21:15
|
в 43 такой запрос в модуле проведения
в 8.1 заблокирует всю таблицу движений. тк уровень изоляции - serializeble |
|||
50
mnail1979
16.04.12
✎
22:16
|
(49)вот вот. Поэтому думаю вернуться на остатки, но при этом добавив в регистр новый реквизит "рейс"
|
|||
51
mnail1979
16.04.12
✎
22:31
|
(50) точнее новое измерение
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |