Имя: Пароль:
1C
 
Deadlock в TempDB, 1С 8.2 + MSSQL 2005
0 Baker_it
 
01.02.11
12:50
Добрый день. Последнее время пользователи начали жаловаться на часто выскакивающее сообщение следующего вида:

Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{ОбщийМодуль.ПолныеПрава(919)}: Ошибка при вызове метода контекста (Записать)

по причине:

по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=38, Severity=10, native=1222, line=1

Полез в SQL Profiler, запустил трассировку событий на сервере. Нашел дедлоки, причем 90% их - в базе TempDB. Как с ними бороться? Где искать узкие места? Есть у кого опыт?
1 Baker_it
 
01.02.11
12:51
Да, забыл упомянуть - конфигурация УТ 10.3, чуть-чуть допиленная, но проблемы возникают при проведении оставшихся типовыми документов (ПКО, платежки, даже счет-фактуры).
2 Axel2009
 
01.02.11
12:53
Lock request time out period exceeded.
это не дедлоки. дедлок так и пишется.
включайте управляемые блокировки. вон товарищи из рауза делают это за 2-5 дней.
3 Живой Ископаемый
 
01.02.11
12:54
рауза?
4 Axel2009
 
01.02.11
12:57
(3) заболтался. рарус =)
5 Живой Ископаемый
 
01.02.11
12:59
если он просто включит для всей базы режим блокировок управляемый, то велика вероятность что у него уже это пройдет - потому что блокировка-то у него выскакивает еще до проведения, пр записи.. То есть на сам объект и его его ТЧ.
6 Axel2009
 
01.02.11
13:00
ну если просто включить режим блокировок управляемый и при этом не озаботиться блокировками 1сными, то велик шанс грязного чтения при контроле остатков..
7 Живой Ископаемый
 
01.02.11
13:01
да, это да... все верно
8 Baker_it
 
01.02.11
13:16
(2) Есть и сообщения о взаимоблокировке:

[URL=http://www.radikal.ru][IMG]http://s009.radikal.ru/i310/1102/d5/bd4494837166.jpg[/IMG][/URL]
9 Baker_it
 
01.02.11
13:36
Пардон, http://s009.radikal.ru/i310/1102/d5/bd4494837166.jpg

Вопрос о методике поиска причин взаимных блокировок остается в силе :)
10 Axel2009
 
01.02.11
13:37
ну можно ЦУП использовать. а если на коленках, то смотришь что за таблица (номер). ищешь в метаданных. понимаешь что за объект в конфигураторе. и меняешь запись и/или удаление этих объектов местами. надо смотреть по месту. чтобы блокировки накладывались последовательно, а не крестнакрест
11 Axel2009
 
01.02.11
13:38
(9)+ переходить на управляемые блокировки тоже в силе.
12 Живой Ископаемый
 
01.02.11
13:44
13 Baker_it
 
01.02.11
13:59
Ясно, благодарю :) Проблема была в том, чтобы по событию в профайлере найти таблицу БД. Буду копать.
14 Живой Ископаемый
 
01.02.11
14:00
если ты настроишь ТЖ, то не нужно будет терзать профайлер. Ты сразу получишь лог с блокировкой и со всем контекстом исключения.
Основная теорема систематики: Новые системы плодят новые проблемы.