Имя: Пароль:
1C
 
v8: Взаимные блокировки (deadlock)
0 Vahe
 
11.12.06
13:46
Возникает при выполнении запроса:
     Таблица = ЗапросСвободныйОстаток.Выполнить()
может кто сталкивался? От чего может это быть?
1 Оберштурмбанфюрер
 
11.12.06
13:47
нажми на красную буковку Я в углу
2 Vahe
 
11.12.06
13:59
(1) Спсибо. Действительно, достаточно много информации, но не то что мне нужно.
В документации 1с написано, если я правильно понял, что взаимные блокировки возникают когда пытаются записать, обновить данные (регистр), а у меня просто запрос. Вот в чем проблема.
3 Оберштурмбанфюрер
 
11.12.06
14:00
может в это время его кто-то юзает?
4 MikleV
 
11.12.06
14:05
запрос покажи
5 Vahe
 
11.12.06
14:05
(3) Юзает это точно, а то бы не было взаимных блокировак, только как юзает, вот в чем вопрос.Примеру если с 2 сеансов запустить одинаковый запрос, он же не приведет к взаимной блокировки
6 Vahe
 
11.12.06
14:07
Если Авторезервирование Тогда
       ЗапросСвободныйОстаток.Текст =
       "ВЫБРАТЬ
       |    ОстаткиТоваровКомпанииОстатки.Номенклатура,
       |    ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры,
       |    ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК Размещение,
       |    ОстаткиТоваровКомпанииОстатки.СкладКомпании.Розничный КАК СкладКомпанииРозничный,
       |    ОстаткиТоваровКомпанииОстатки.ЦенаВРознице,
       |    NULL КАК ТоварТара,
       |    NULL КАК ДоговорВзаиморасчетов,
       |    ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК Количество,
       |    1 КАК СортировкаРазмещение,
       |    ВЫБОР
       |        КОГДА ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение ТОГДА
       |            0
       |        ИНАЧЕ
       |            1
       |    КОНЕЦ КАК СортировкаСкладКомпании,
       |    NULL КАК ДатаПоступления
       |ИЗ
       |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки(,
       |        Заказ = &ПустойЗаказПокупателя
       |        И Номенклатура В (&МассивНоменклатуры)) КАК ОстаткиТоваровКомпанииОстатки    
       |ГДЕ
       //sss работаем только с складом документа
       //|    НЕ ОстаткиТоваровКомпанииОстатки.СкладКомпании.Розничный
       //|    ИЛИ ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение";
       //vvv 03.10.2006г.
       //Было
       |    ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение
       //Стало
       |
       |ДЛЯ ИЗМЕНЕНИЯ   //против блокировок (deadlocked)
       |              РегистрНакопления.ОстаткиТоваровКомпании.Остатки ";
       //vvv 03.10.2006г.    

   КонецЕсли;
   Если Авторезервирование И Авторазмещение Тогда
       ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст +
       "
       |ОБЪЕДИНИТЬ ВСЕ
       |";
   КонецЕсли;
   Если Авторазмещение Тогда
       ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст +
       "ВЫБРАТЬ
       |    ЗаказыПоставщикамОстатки.Номенклатура,
       |    ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры,
       |    ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК Размещение,
       |    Ложь КАК СкладКомпанииРозничный,
       |    0 КАК ЦенаВРознице,
       |    ЗаказыПоставщикамОстатки.ТоварТара,
       |    ЗаказыПоставщикамОстатки.ДоговорВзаиморасчетов,
       |    ЗаказыПоставщикамОстатки.КоличествоОстаток  КАК Количество,
       |    0 КАК СортировкаРазмещение,
       |    1 КАК СортировкаСкладКомпании,
       |    ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДатаПоступления КАК ДатаПоступления
       |ИЗ
       |    РегистрНакопления.ЗаказыПоставщикам.Остатки(,
       |        ЗаказПокупателя = &ПустойЗаказПокупателя
       |        И ЗаказПоставщику.ДатаПоступления <= &ДатаОтгрузки
       //vvv 03.10.2006г.
       //Было
       //|        И Номенклатура В (&МассивНоменклатуры)) КАК ЗаказыПоставщикамОстатки ";
       //Стало
       |        И Номенклатура В (&МассивНоменклатуры)) КАК ЗаказыПоставщикамОстатки
       |
       |ДЛЯ ИЗМЕНЕНИЯ  //против блокировок (deadlocked)
       |              РегистрНакопления.ЗаказыПоставщикам.Остатки ";
       //vvv 03.10.2006г.
   КонецЕсли;
   Если Авторезервирование И Авторазмещение Тогда
       ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст + "
       |УПОРЯДОЧИТЬ ПО                 // Определяет стратегию авторезервирования и авторазмещения
       |    СортировкаРазмещение,       // Сначала на складе, потом в заказах
       |    СортировкаСкладКомпании,    // Сначала предпочтительный склад, затем остальные
       |    ДатаПоступления УБЫВ        // В порядке убывания даты отгрузки    ";
   ИначеЕсли Авторезервирование Тогда
       ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст + "
       |УПОРЯДОЧИТЬ ПО                 // Определяет стратегию авторезервирования и авторазмещения
       |    СортировкаСкладКомпании     // Сначала предпочтительный склад, затем остальные ";
   ИначеЕсли Авторазмещение Тогда
       ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст + "
       |УПОРЯДОЧИТЬ ПО                 // Определяет стратегию авторезервирования и авторазмещения
       |    ДатаПоступления УБЫВ        // В порядке убывания даты отгрузки    ";
   КонецЕсли;
   
   Таблица = ЗапросСвободныйОстаток.Выполнить().Выгрузить();
7 Vahe
 
11.12.06
14:08
вот запрос:

ВЫБРАТЬ
   ОстаткиТоваровКомпанииОстатки.Номенклатура,
   ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры,
   ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК Размещение,
   ОстаткиТоваровКомпанииОстатки.СкладКомпании.Розничный КАК СкладКомпанииРозничный,
   ОстаткиТоваровКомпанииОстатки.ЦенаВРознице,
   NULL КАК ТоварТара,
   NULL КАК ДоговорВзаиморасчетов,
   ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК Количество,
   1 КАК СортировкаРазмещение,
   ВЫБОР
       КОГДА ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение ТОГДА
           0
       ИНАЧЕ
           1
   КОНЕЦ КАК СортировкаСкладКомпании,
   NULL КАК ДатаПоступления
ИЗ
   РегистрНакопления.ОстаткиТоваровКомпании.Остатки(,
       Заказ = &ПустойЗаказПокупателя
       И Номенклатура В (&МассивНоменклатуры)) КАК ОстаткиТоваровКомпанииОстатки    
ГДЕ
   ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение

ДЛЯ ИЗМЕНЕНИЯ   //против блокировок (deadlocked)
             РегистрНакопления.ОстаткиТоваровКомпании.Остатки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
   ЗаказыПоставщикамОстатки.Номенклатура,
   ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры,
   ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК Размещение,
   Ложь КАК СкладКомпанииРозничный,
   0 КАК ЦенаВРознице,
   ЗаказыПоставщикамОстатки.ТоварТара,
   ЗаказыПоставщикамОстатки.ДоговорВзаиморасчетов,
   ЗаказыПоставщикамОстатки.КоличествоОстаток  КАК Количество,
   0 КАК СортировкаРазмещение,
   1 КАК СортировкаСкладКомпании,
   ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДатаПоступления КАК ДатаПоступления
ИЗ
   РегистрНакопления.ЗаказыПоставщикам.Остатки(,
       ЗаказПокупателя = &ПустойЗаказПокупателя
       И ЗаказПоставщику.ДатаПоступления <= &ДатаОтгрузки
       И Номенклатура В (&МассивНоменклатуры)) КАК ЗаказыПоставщикамОстатки

ДЛЯ ИЗМЕНЕНИЯ  //против блокировок (deadlocked)
             РегистрНакопления.ЗаказыПоставщикам.Остатки
УПОРЯДОЧИТЬ ПО                 // Определяет стратегию авторезервирования и авторазмещения
   СортировкаРазмещение,       // Сначала на складе, потом в заказах
   СортировкаСкладКомпании,    // Сначала предпочтительный склад, затем остальные
   ДатаПоступления УБЫВ        // В порядке убывания даты отгрузки
8 MikleV
 
11.12.06
14:08
для чего по твоему ключевое слово "ДЛЯ ИЗМЕНЕНИЯ"?
9 Vahe
 
11.12.06
14:10
(8)"Для изменения" захват таблиц и не допускать другим захватить эту таблицу.
Ну и что из этого?
10 Vahe
 
11.12.06
14:11
При выполнении этого запроса возникает взаимная блокировка
11 ZolotarevAA
 
11.12.06
14:11
(8) Видимо, для блокировок.
12 Vahe
 
11.12.06
14:12
Может я что то не так понимаю?
13 ZolotarevAA
 
11.12.06
14:12
+11 Кстати, можно было бы так метод и назвать: ДЛЯ БЛОКИРОВОК
14 Vahe
 
11.12.06
14:12
(11) это точно, для того что бы до конца работы сэтой таблицой (или транзакции) никто данные в нем не изменял
15 Vahe
 
11.12.06
14:13
(13) Вопрос остается открыт, почему при выполнении этого запроса возникает взаимная блокировка?
16 Vahe
 
11.12.06
14:14
Вот ошибка:
{Документ.ЗаказПокупателя(546)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Transaction (Process ID 60) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
HRESULT=80004005, SQLSTATE=40001, native=1205
"
   Таблица = ЗапросСвободныйОстаток.Выполнить().Выгрузить();
по причине:
Ошибка выполнения запроса "Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Transaction (Process ID 60) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
HRESULT=80004005, SQLSTATE=40001, native=1205
17 ZolotarevAA
 
11.12.06
14:16
(15) Почитай инфу по ключу в 8.
18 Vahe
 
11.12.06
14:20
(17) Что за инфа по номеру 8? Ты знаешь ответ на мой вопрос?
19 AeDen
 
11.12.06
14:22
Использование предложения «ДЛЯ ИЗМЕНЕНИЯ» в языке запросов
Предложение ДЛЯ ИЗМЕНЕНИЯ позволяет заблаговременно заблокировать некоторые данные (которые могут читаться транзакцией другого соединения) уже при считывании, чтобы исключить взаимные блокировки при записи. ДЛЯ ИЗМЕНЕНИЯ дает возможность указать в запросе таблицы, считываемые данные которых предполагается изменять. В этом случае другое соединение будет ожидать освобождения этих данных уже в момент считывания внутри транзакции, т.е. не сможет прочесть заблокированные данные до тех пор, пока не будет завершена транзакция, наложившая блокировку. Блокировка от изменения данных считываемых в транзакции выполняется независимо от предложения ДЛЯ ИЗМЕНЕНИЯ. Это значит, что если внутри какой-либо транзакции считаны некоторые данные, то из другого соединения эти данные не могут быть изменены до тех пор, пока блокировка не будет снята. Если запрос выполняется вне транзакции, то в нем могут быть считаны и заблокированные данные.

Блокировки устанавливаются в момент выполнения запроса, сбрасываются же при окончании транзакции. В случае если запрос выполняется вне транзакции предложение ДЛЯ ИЗМЕНЕНИЯ игнорируется.

В случае если после предложения ДЛЯ ИЗМЕНЕНИЯ отсутствуют имена таблиц, блокироваться будут считанные данные из всех таблиц, задействованных в запросе. В случае указания конкретных таблиц будут блокироваться только данные из перечисленных таблиц. Для блокировки можно указывать только таблицы верхнего уровня (т.е. не табличные части), участвующие в запросе. Должны приводиться именно имена таблиц, а не их псевдонимы, определенные в запросе. В случае указания виртуальной таблицы будут блокированы данные из всех таблиц, задействованных в виртуальной таблице. При указании виртуальной таблицы следует записывать ее имя без параметров.


(с) ИТС
20 ZolotarevAA
 
11.12.06
14:23
(18) Попробуй закомментарить (вернуть назад) кем-то правленный кусок:

      //vvv 03.10.2006г.

       //Было

       //|        И Номенклатура В (&МассивНоменклатуры)) КАК ЗаказыПоставщикамОстатки ";

       //Стало

       |        И Номенклатура В (&МассивНоменклатуры)) КАК ЗаказыПоставщикамОстатки
       |
       |ДЛЯ ИЗМЕНЕНИЯ  //против блокировок (deadlocked)

       |              РегистрНакопления.ЗаказыПоставщикам.Остатки ";
       //vvv 03.10.2006г.
21 Vahe
 
11.12.06
14:31
(20) Почему? "Для изменения" написано для того что бы другие не захватили. И как может из за "Для изменения" возникать взаимная блокировка?
смотри в (19):
Предложение ДЛЯ ИЗМЕНЕНИЯ позволяет заблаговременно заблокировать некоторые данные (которые могут читаться транзакцией другого соединения) уже при считывании, чтобы исключить взаимные блокировки при записи.
22 AeDen
 
11.12.06
14:32
(21) Как-как... Таблица уже заблокирована... И ты ее пытаешься захватить... Кто-то документ проводит, а ты отчет формируешь, и со своим предложением "ДЛЯ ИЗМЕНЕНИЯ" всю малину портишь.
23 Vahe
 
11.12.06
14:38
(22) Спасибо, сейчась попробую.

Только: ты привел из ИТС (19) Блокировка от изменения данных считываемых в транзакции выполняется независимо от предложения ДЛЯ ИЗМЕНЕНИЯ. Это значит, что если внутри какой-либо транзакции считаны некоторые данные, то из другого соединения эти данные не могут быть изменены до тех пор, пока блокировка не будет снята.

Если бы было бы как в (22) то в обработке проведения сделать запрос по регистрам в которых позже будут записаны данные, то все время должно было бы дать взаимные блокировки, от других документов того же вида. Разве не так?
24 Vahe
 
11.12.06
14:50
(22) Это не так. Если таблица заблокирована против чтение, то с "для изменения" или без, запрос будет ждать пока не снимится блокировка, максимум что может сделать то прервать ожидание, и ни какими взаимными блокировками тут и не пахнет... Вопрос все еще остается.
25 Vahe
 
11.12.06
14:59
?
26 France
 
11.12.06
15:02
(24) поищи описания по совместимости блокировок для MS SQL
27 Barsuk
 
11.12.06
15:04
Взаимные блокировки - это термин движка БД, в данном случае SQL Servera.
Должно быть как минимум два ресурса, которые блокируются.
Попробуй посмотреть в SQL профайлере, что происходит на SQL Servere
28 megalodon
 
11.12.06
15:11
(27) "Должно быть как минимум два ресурса, которые блокируются." - а вот и нифига. И даже процесс может быть всего один, дедлоки бывают от распараллеливания.
29 Barsuk
 
11.12.06
15:17
(28) Согласен. Немного упростил.
30 Vahe
 
11.12.06
15:56
(26) что за описание, где искать?
31 masky
 
11.12.06
16:01
BOL -> deadlocks, overview
32 orefkov
 
11.12.06
16:12
Так и не увидел deadlock'ов, хотя в сабже и обещалось.
Конфликт блокировки увидал.
33 orefkov
 
11.12.06
16:13
Упс. (16) просмотрел.
34 Vahe
 
11.12.06
17:10
?
35 Barsuk
 
11.12.06
17:25
Почитай про особенности работы "ДЛЯ ИЗМЕНЕНИЯ" в клиент-серверном варианте
в книге "Проф. разработка в 1С 8.0" (глава 4 и далее)
36 smaharbA
 
11.12.06
17:31
Афигеть, этож че у вас запрос апдейт или инсёрт делает или еще какой алтер ?
37 Vahe
 
11.12.06
21:19
Вопрос остается открытым
38 Neco
 
11.12.06
21:34
(37) Ну давай закрывать ;-)
В запросе напиши:

ВЫБРАТЬ РАЗРЕШЕННЫЕ

Что такое "РАЗРЕШЕННЫЕ" разберись сам - будет тебе домашнее задание
39 Vahe
 
11.12.06
21:45
(38) "Учитель" не путаешь ли ты систему rls с deadlock ами?
40 Neco
 
11.12.06
21:46
(39) Мдя ... путаю :-(
41 Vahe
 
11.12.06
21:47
(40) Бывает. Нормально
42 Neco
 
11.12.06
21:48
(41) Хорошо в чем вопрос, после такого бурного обсуждения он должен был быть снят
43 Vahe
 
11.12.06
21:50
(42) Возникает deadlock не могу понять почему
44 Vahe
 
11.12.06
21:50
Притом возникает не во время изменение данных, а во время запроса
45 Neco
 
11.12.06
21:51
(44) Во время выполнения запроса, какие либо действия с данными из запроса производятся? Например провидение документа?
46 Vahe
 
11.12.06
21:51
этот deadlock возникает когда проводим один и тот же тип документа (ЗаказПокупателья)
47 Vahe
 
11.12.06
21:52
Да, Сперва очищается регистр:
           НаборОстаткиТоваровКомпании = РегистрыНакопления.ОстаткиТоваровКомпании.СоздатьНаборЗаписей();
           НаборОстаткиТоваровКомпании.Отбор.Регистратор.Установить(Ссылка);
           НаборОстаткиТоваровКомпании.Прочитать();
               НаборОстаткиТоваровКомпании.Очистить();
               НаборОстаткиТоваровКомпании.Записать();
48 Vahe
 
11.12.06
21:53
После запрос:
ВЫБРАТЬ
   ОстаткиТоваровКомпанииОстатки.Номенклатура,
   ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры,
   ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК Размещение,
   ОстаткиТоваровКомпанииОстатки.СкладКомпании.Розничный КАК СкладКомпанииРозничный,
   ОстаткиТоваровКомпанииОстатки.ЦенаВРознице,
   NULL КАК ТоварТара,
   NULL КАК ДоговорВзаиморасчетов,
   ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК Количество,
   1 КАК СортировкаРазмещение,
   ВЫБОР
       КОГДА ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение ТОГДА
           0
       ИНАЧЕ
           1
   КОНЕЦ КАК СортировкаСкладКомпании,
   NULL КАК ДатаПоступления
ИЗ
   РегистрНакопления.ОстаткиТоваровКомпании.Остатки(,
       Заказ = &ПустойЗаказПокупателя
       И Номенклатура В (&МассивНоменклатуры)) КАК ОстаткиТоваровКомпанииОстатки    
ГДЕ
   ОстаткиТоваровКомпанииОстатки.СкладКомпании = &ПредпочтительноеРазмещение

ДЛЯ ИЗМЕНЕНИЯ   //против блокировок (deadlocked)

             РегистрНакопления.ОстаткиТоваровКомпании.Остатки
49 Vahe
 
11.12.06
21:54
После срабатывает стандартное удаление после "ПередЗаписем"
50 Vahe
 
11.12.06
21:54
И входит в обработку проведение
51 Vahe
 
11.12.06
21:54
Где уже есть запрос с Левым соединением, который контролирует остатки
52 Vahe
 
11.12.06
21:55
Вот deadlock возникает или при выполнении первого запроса или при 2 запросе
53 Vahe
 
11.12.06
21:55
притом процедуры стандартные, почти ничего не доработанно из 10.1
54 Vahe
 
11.12.06
21:56
Работало долгое время нормально, а уже 2 недельи умирает от множество deadlock ов, у меня еще подозрение есть что это связанно с какими то индесными файлами в SQL server
55 aka MikleV
 
11.12.06
21:59
(54) откуда такое подозрение? не знаю ..путаница в индексах может вызвать дедлок или нет.. ненастолько спец, но  можно реиндексировать базу.
56 Vahe
 
11.12.06
22:01
Есть скрипт, который запускается и реиндексируется таблицы в SQL server
57 Vahe
 
11.12.06
22:03
Я подумал может кто сталкивался?
58 Neco
 
11.12.06
22:05
По попробуй обнови статистику базы данных SQL. В Query Analyzer выполни скрипт:
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
DBCC FREEPROCCACHE
59 MikleV
 
11.12.06
22:06
(56) угу)есть..абрахамс выкладывал.. поищи по нику smaharbA
60 Vahe
 
11.12.06
22:07
(58) а что даст это?
61 Neco
 
11.12.06
22:07
//Регулярная переиндексация таблиц базы данных с помощью команды  
DBCC DBREINDEX ( table_name ).
//Регулярная дефрагментация индексов базы данных  с помощью команды
DBCC INDEXDEFRAG(database_name, table_name, index_name).
62 Vahe
 
11.12.06
22:07
(59) скрипт есть, только не знаю, поможет ли, и выполняется несколько часов
63 Neco
 
11.12.06
22:09
(60) Скорее всего ничего, но попробуй вообще такая команда обновляется статистику выборки запросов из базы, вроде как должна увеличит скорость выполнения запроса, но возможно повлияет и на твою проблему.
В твоем случае нужно экспериментировать. Попробуй убери очистку регистра, будут ли блокировки?
64 Vahe
 
11.12.06
22:10
(63) Уже пробовал, единственное что не возникает deadlock это когда убираю "Левое соединение" во 2 запросе
65 Vahe
 
11.12.06
22:11
(63) Спасибо, я попробую.
66 Vahe
 
11.12.06
22:14
Итоги не были расчитаны вообще, вот только что рассчитали, после поменял "Левое соединенме" на вложенный запрос, "Для изменение" во вложенном, и после этого "Левое соединение", очень быстро стало работать и пока нету deadlock ов
67 smaharbA
 
11.12.06
22:19
Страно, неужто в 8.0 всеже индексы при запросе реорганизуются, или того патче перезапись каких "служебных" полей идет ? (не знаю 8 вообще)
68 Neco
 
11.12.06
22:22
(67) Нет вроде такое не происходит
69 Neco
 
11.12.06
22:28
Рекомендую статью с ИТС
"Особенности проектирования конфигурации с точки зрения обеспечения параллельности работы пользователей"
70 ildus
 
11.12.06
22:30
А как избежать взаимных блокировок в файловой (не SQL) версии 1С v7.7 ??
71 smaharbA
 
11.12.06
22:33
(70) а тама нету их по определению...
72 ildus
 
11.12.06
22:34
(71) Увы возникают однако
73 Neco
 
11.12.06
22:43
(72) Никак, переходи на файловую версию
74 ildus
 
11.12.06
22:44
+(72) В терминале с файловой 1С v77 с установленной компонентой ромикса для устранения проблемы 100% загрузки процессора при ожидании захвата таблицы, иногда возникает ситуация, когда у нескольких пользователей происходит ожидание захвата какой-нибудь таблицы, при загрузке процессора на терминале = 0%. Это длится около минуты, пока один из пользователей не отвалится из-за таймаута.
75 Neco
 
11.12.06
22:45
+(73) Тьфу, уходи с файловой версии переходи на клиент-серверную
76 ildus
 
11.12.06
22:45
(73) дык это на файловой и происходит
77 ildus
 
11.12.06
22:49
(75) разве для v7.7 сущестувет клиент-серверная версия? SQL что-ли?
78 smaharbA
 
11.12.06
23:09
(74) нафих тебе эта ВК, поставь время ожидания 1 и успокойся, пущай жмут себе чаще...
79 Neco
 
11.12.06
23:10
(77) Да
80 ildus
 
11.12.06
23:21
(78) и будут все обработки например импорта документов аварийно завершаться если кто-нибудь устроит транзакцию дольше 1сек... Было и 1 сек и 5 и 0 -ничего хорошего
81 smaharbA
 
11.12.06
23:23
(80) А НачатьТранзакцию отменили ?
82 ildus
 
11.12.06
23:26
(81) чтобы все пользователи на время работы обработки пошли курить?
83 Vahe
 
12.12.06
09:16
Ничего не помогает, вопрос открыт
84 Neco
 
12.12.06
09:26
(83) Еще раз опиши что ты делаешь в модуле документа. Что в процедуре ПередЗАписью, ПриЗаписи и ОбработкаПроведения. И где точно возникают блокировки
85 Neco
 
12.12.06
09:30
Если дела такие серьезные то советую обратится на партнерский форум: http://partners.v8.1c.ru/forums/
86 Vahe
 
12.12.06
09:44
(84) У меня сильные подозрения что виноват SQL server
87 Neco
 
12.12.06
09:50
(86) Возможно, поэтому чтобы решить твою задачу, нужно полное описание ошибок + платформа 1С и SQL. Иначе что-то сказать трудно.
Выход на партнерский форум есть?
88 Vahe
 
12.12.06
09:51
(87) Есть. Да, еще посмотрью, сейчась вроде нету дедлоков
89 Vahe
 
12.12.06
09:52
(87) Тебе отдельное спасибо
90 rsv
 
12.12.06
10:12
www.rsdn.ru . Там в разделе Статьи/MSSQL server/ статья есть "Что такое взаимоблокировки и как с ними бороться". Статья сугубо о MSSQL но интересна. Автор приводит способы отлова взаимоблокировок средствами сервера и пути их анализа.
91 Vahe
 
12.12.06
11:19
(90) не могу найти MSSQL server в статьях
92 Barsuk
 
12.12.06
11:27
Независимо от того, куда вы едете — это в гору и против ветра!