|
|
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 10:51:09 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Знакомая проблема :-) Удалось решить после тщательного анализа происходящего, запустив сервер под дебагом и с trace-флагом 1204. При этом в логе можно подробно посмотреть информацию о сцепившихся потоках - владелец ресурса, тип лока, тип statement'а и многое другое. В моем случае был изрядный перехлест в нескольких триггерах, пришлось более точно ставить хинты на запросы, чтобы избежать deadlock'ов. В BOL можно посмотреть Contents->Troubleshooting->Server and Database Troubleshooting->Troubleshooting Deadlocks. Если подозрения точно падают на распараллеливание, то см. сразу статью Deadlocks Involving Parallelism. Если не получится выяснить, в чем дело, то сбрасывайте сюда лог под дебагом, посмотрим :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:10:03 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
запустив сервер под дебагом Сервер ? А поточнее. Запрос - это просто 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:42:40 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Если в запросе, составляющем View, указать OPTION(MAXDOP 1), то оно будет работать? Флаг трассировки: что дает его установка на все соединения (DBCC TRACEON(1204,-1))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:45:02 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Про сервер под дебагом см. Ваше сообщение Trace flag 1204. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:46:19 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Кстати, если кто знает, как добиться полной информации о deadlock'ах, обходясь только профайлером, скажите, плз. Мне в свое время так и не удалось настроить полностью. Пришлось запускать SQL Server не как сервис, а в консольном режиме с выводом лога в файл. Сработало, но хотелось, чтоб как у белых людей :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:50:28 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Вы, конечно, читали http://support.microsoft.com/default.aspx?scid=kb;en-us;Q282749. Возможно, это просто недофиксили в SP2. Что в журналах сервера? (Если ничего, то пробовали ли флаг 3605) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:51:47 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
С указанием OPTION(MAXDOP 1) в теле SELECT-а ошибка исчезает. Спасибо ! В журналах равным счетом ничего ни с 1204 ни с 3605 Вот только не скажется ли уменьшение degree of parallelism на общей производительности запроса. Ведь таблицы из parttioned view-а довольно большого объема (11-12 миллионов записей каждая, при среднем размере записи 90 байт) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 12:09:50 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Значит проблемы две: 1. Запрос, задающий представление, не может работать без deadlock'ов на двух процессорах. 2. Не установить флаги трассировки. По поводу второго пункта: это очень странно. Попробуйте все с начала: остановить сервер, убрать журнал ERRORLOG из папки /LOG, стартовать сервер, выполнить в QA: Код: plaintext 1. В ERRORLOG появится нечто в роде: Код: plaintext 1. 2. 3. Или нет? P.S. Не знаю, может быть на одном процессоре даже быстреt выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 12:20:36 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Информацию о включении/выключении trace flag-ов в журнале есть. Не мог получить результаты работы 1204, но про это мне GreenSunrise объяснил, спасибо ему. Насчет deadlock-а процессоров. Почему же тогда этот же запрос работает нормально и без OPTION(MAXDOP 1) если только используется условие фильтрации, под которое попадает хотя бы одна из таблиц view-a. И только при условии, что имеется хотя бы один LEFT OUTER JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 12:43:01 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
А можно все-таки глянуть подробный лог? Там должно быть видно наложение блокировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 12:55:11 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Попробую вечером, когда можно будет перезапустить сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 13:21:48 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Аналогичная проблема. Возникает при включении распараллеливания, других подключений нет. И самое интересное что ошибка возникает не всегда - иногда запрос проходит. Запрос многоуровневый - select ... from ( select ... ) from (select ... ))). Получаеться что существуют запросы которые не работают на нескольких процессорах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 12:04:05 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Да, Glory, а чем кончилась ваша история с deadlock'ами? Они были подавлены? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 12:07:16 |
|
||
|
Чо это за deadlock ?
|
|||
|---|---|---|---|
|
#18+
Подавлены-то они подавлены с помощью OPTION(MAXDOP 1), но вот точный диагноз указать пока не могу, т.к. 2-х процессорная машина для тестов только одна, но она и есть основной сервер. Как сформирую мнение, так сообщу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 14:35:21 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32042117&tid=1821245]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 374ms |

| 0 / 0 |
