Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Чо это за deadlock ? / 16 сообщений из 16, страница 1 из 1
09.07.2002, 10:51:09
    #32035718
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Transaction (Process ID 67) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Дело все в том, что эксперимент проводится при наличии только одного пользовательского коннекта (это совершенно точно). Deadlock возникает при обращении к partioned view-у тольк при с определенными условиями в WHERE, а точнее, когда ни одна из таблиц view-а не соответствует условию фильтрации

Есть смутное предположение, что это связано операцией распараллеривания запроса

ЗЫ
SQL2000 SP2, Win2000 AdvServ SP2, RAM 2Gb, 2xPIII-733
...
Рейтинг: 0 / 0
09.07.2002, 11:10:03
    #32035730
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Знакомая проблема :-) Удалось решить после тщательного анализа происходящего, запустив сервер под дебагом и с trace-флагом 1204. При этом в логе можно подробно посмотреть информацию о сцепившихся потоках - владелец ресурса, тип лока, тип statement'а и многое другое. В моем случае был изрядный перехлест в нескольких триггерах, пришлось более точно ставить хинты на запросы, чтобы избежать deadlock'ов.

В BOL можно посмотреть Contents->Troubleshooting->Server and Database Troubleshooting->Troubleshooting Deadlocks. Если подозрения точно падают на распараллеливание, то см. сразу статью Deadlocks Involving Parallelism.

Если не получится выяснить, в чем дело, то сбрасывайте сюда лог под дебагом, посмотрим :-))
...
Рейтинг: 0 / 0
09.07.2002, 11:42:40
    #32035738
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
запустив сервер под дебагом

Сервер ? А поточнее.

Запрос - это просто SELECT: 5 таблиц в связке с GROUP WITH ROLLUP (правда 1 таблица - это partitioned view из 12 таблиц). Именно один SELECT.

Еще одна интересная особенность - если убрать из запроса все LEFT OUTER JOIN-ы, то ошибка пропадает. Если есть хотя бы один (любой на выбор) - то опять появляется

Статьи прочитал - но добится от флага 1204 ничего не могу. В Profiler-е всего 2 совершенно одинаковые записи записи с минимумом информации
Event Class - Lock:Deadlock Chain
DatabaseID - 0
Event Subclass - Exchange
Integer Data - 108449 (меняется)
Login SID - 0x01
ServerName - Myserver
TextData - Parallel query worker thread was involved in a deadlock
...
Рейтинг: 0 / 0
09.07.2002, 11:45:02
    #32035740
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Если в запросе, составляющем View, указать OPTION(MAXDOP 1), то оно будет работать?

Флаг трассировки: что дает его установка на все соединения (DBCC TRACEON(1204,-1))?
...
Рейтинг: 0 / 0
09.07.2002, 11:46:19
    #32035741
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Про сервер под дебагом см. Ваше сообщение Trace flag 1204.
...
Рейтинг: 0 / 0
09.07.2002, 11:50:28
    #32035744
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Кстати, если кто знает, как добиться полной информации о deadlock'ах, обходясь только профайлером, скажите, плз. Мне в свое время так и не удалось настроить полностью. Пришлось запускать SQL Server не как сервис, а в консольном режиме с выводом лога в файл. Сработало, но хотелось, чтоб как у белых людей :-)
...
Рейтинг: 0 / 0
09.07.2002, 11:51:47
    #32035745
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Вы, конечно, читали http://support.microsoft.com/default.aspx?scid=kb;en-us;Q282749. Возможно, это просто недофиксили в SP2.

Что в журналах сервера? (Если ничего, то пробовали ли флаг 3605)
...
Рейтинг: 0 / 0
09.07.2002, 12:09:50
    #32035749
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
С указанием OPTION(MAXDOP 1) в теле SELECT-а ошибка исчезает. Спасибо !

В журналах равным счетом ничего ни с 1204 ни с 3605

Вот только не скажется ли уменьшение degree of parallelism на общей производительности запроса. Ведь таблицы из parttioned view-а довольно большого объема (11-12 миллионов записей каждая, при среднем размере записи 90 байт) ?
...
Рейтинг: 0 / 0
09.07.2002, 12:20:36
    #32035753
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Значит проблемы две:
1. Запрос, задающий представление, не может работать без deadlock'ов на двух процессорах.
2. Не установить флаги трассировки.

По поводу второго пункта: это очень странно. Попробуйте все с начала: остановить сервер, убрать журнал ERRORLOG из папки /LOG, стартовать сервер, выполнить в QA:

Код: plaintext
1.
DBCC TRACEON( 1204 ,  3605 , - 1 ).


В ERRORLOG появится нечто в роде:

Код: plaintext
1.
2.
3.
 2002 - 07 - 09   12 : 19 : 33 . 71  spid51    DBCC TRACEON  1204 , server process ID (SPID)  51 .
 2002 - 07 - 09   12 : 19 : 33 . 75  spid51    DBCC TRACEON  3605 , server process ID (SPID)  51 .
 2002 - 07 - 09   12 : 19 : 33 . 75  spid51    DBCC TRACEON - 1 , server process ID (SPID)  51 .


Или нет?

P.S. Не знаю, может быть на одном процессоре даже быстреt выйдет.
...
Рейтинг: 0 / 0
09.07.2002, 12:43:01
    #32035764
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Информацию о включении/выключении trace flag-ов в журнале есть. Не мог получить результаты работы 1204, но про это мне GreenSunrise объяснил, спасибо ему.

Насчет deadlock-а процессоров. Почему же тогда этот же запрос работает нормально и без OPTION(MAXDOP 1) если только используется условие фильтрации, под которое попадает хотя бы одна из таблиц view-a. И только при условии, что имеется хотя бы один LEFT OUTER JOIN.
...
Рейтинг: 0 / 0
09.07.2002, 12:55:11
    #32035769
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
А можно все-таки глянуть подробный лог? Там должно быть видно наложение блокировок.
...
Рейтинг: 0 / 0
09.07.2002, 13:21:48
    #32035774
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Попробую вечером, когда можно будет перезапустить сервер.
...
Рейтинг: 0 / 0
09.08.2002, 12:04:05
    #32042113
a2
a2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Аналогичная проблема. Возникает при включении распараллеливания, других подключений нет.
И самое интересное что ошибка возникает не всегда - иногда запрос проходит.
Запрос многоуровневый - select ... from ( select ... ) from (select ... ))).
Получаеться что существуют запросы которые не работают на нескольких процессорах ?
...
Рейтинг: 0 / 0
09.08.2002, 12:07:16
    #32042117
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Да, Glory, а чем кончилась ваша история с deadlock'ами? Они были подавлены? ;-)
...
Рейтинг: 0 / 0
09.08.2002, 14:35:21
    #32042170
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чо это за deadlock ?
Подавлены-то они подавлены с помощью OPTION(MAXDOP 1), но вот точный диагноз указать пока не могу, т.к. 2-х процессорная машина для тестов только одна, но она и есть основной сервер. Как сформирую мнение, так сообщу
...
Рейтинг: 0 / 0
09.08.2002, 21:13:50
    #32042282
Чо это за deadlock ?
А вообще deadlock - мертвый замОк. :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Чо это за deadlock ? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]