Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как разобраться с deadlocks в TEMPDB  [new]
Dats
Member

Откуда: СПБ
Сообщений: 317
Кто нибудь сталкивался с deadlocks в TEMPDB? Как можно обределить код, который их порождает?
Процедура, при исполнении которой они происходят, известна.

К сообщению приложен файл. Размер - 0Kb
2 сен 09, 10:13    [7606587]     Ответить | Цитировать Сообщить модератору
 Re: Как разобраться с deadlocks в TEMPDB  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
запустите трайс флаги и посмотрите граф дедлока
-------------------------------------
Jedem Das Seine
2 сен 09, 10:23    [7606635]     Ответить | Цитировать Сообщить модератору
 Re: Как разобраться с deadlocks в TEMPDB  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Гм... Помоему и в картинке достаточно информации. В чем необходимость менять структуру верменной таблице в этой хп?!
2 сен 09, 10:41    [7606740]     Ответить | Цитировать Сообщить модератору
 Re: Как разобраться с deadlocks в TEMPDB  [new]
Dats
Member

Откуда: СПБ
Сообщений: 317
pkarklin
Гм... Помоему и в картинке достаточно информации. В чем необходимость менять структуру верменной таблице в этой хп?!


В прцедуре более 3000 строк кода. В процедуре в процессе исполнения создается множество табличек в TEMPDB, например
create table #tmp_orgList (
idx int not null identity primary key,
type int not null,
org_id int null, -- организация
federalItem_id int not null, -- регион
settlement_id int not null, -- город при делении город/область
districtType_id int not null, -- тип района
district_id int not null, -- район
department_id int not null, -- ведомство
upDepartment_id int null, -- ведомство верхнего уровня
rubric_id int not null, -- рубрика издания
rubric_code int not null -- рубрика издания, код
)

И индексов, например

create index #tmp_orgList_idx1 on #tmp_orgList (rubric_code, updepartment_id, department_id, org_id)
create index #tmp_orgList_idx2 on #tmp_orgList (type, rubric_code, department_id, org_id)
create index #tmp_orgList_idx3 on #tmp_orgList (type, rubric_code, districtType_id, district_id, department_id, org_id)
create index #tmp_orgList_idx4 on #tmp_orgList (type, rubric_code, settlement_id, districtType_id, district_id, department_id, org_id)

Никаких "ALTER .." по тексту процедуры нет.

Как это может вызать деадлоки - не понимаю. TEMPDB находится на отдельном физическом диске.
2 сен 09, 10:56    [7606862]     Ответить | Цитировать Сообщить модератору
 Re: Как разобраться с deadlocks в TEMPDB  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
SELECT ...INTO....
FROM... есть ?
2 сен 09, 11:50    [7607272]     Ответить | Цитировать Сообщить модератору
 Re: Как разобраться с deadlocks в TEMPDB  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
Создавайте таблицы и индексы до транзакции. И будет вам щастье.

Сообщение было отредактировано: 2 сен 09, 11:54
2 сен 09, 11:53    [7607298]     Ответить | Цитировать Сообщить модератору
 Re: Как разобраться с deadlocks в TEMPDB  [new]
Dats
Member

Откуда: СПБ
Сообщений: 317
Гавриленко Сергей Алексеевич
Создавайте таблицы и индексы до транзакции. И будет вам щастье.


Спасибо. Совет похоже в тему.
А можно чуть чуть по подробнее со ссылкой где почитать, почему создание таблиц в транзакции может приводить к таким эффектам.
2 сен 09, 11:59    [7607337]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить