Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Deadlock Victim  [new]
Farhod
Member

Откуда:
Сообщений: 46
Я новичок в SQL SERVER, возникла проблема с deadlock victim.

При открытии отчета возникает ошибка deadlock victim после 10-15 секунд загрузки(сам отчет открывался за 20-30 секунд).
А раньше этот отчет годами работал и не каких проблем не было.

Может в настройках sql server-а как-то можно изменить время задержки перед ошибкой?
21 сен 15, 13:32    [18175003]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Farhod
Member

Откуда:
Сообщений: 46
Ошибка такая.
Transaction (Process ID 394) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.
21 сен 15, 13:34    [18175015]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Glory
Member

Откуда:
Сообщений: 104751
Farhod
Может в настройках sql server-а как-то можно изменить время задержки перед ошибкой?

Отключите других пользователей. Или прикажите им ничего не запускать
21 сен 15, 13:36    [18175025]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Farhod
Member

Откуда:
Сообщений: 46
Glory,

Если всех закрыть, то получится открыть.
Но никаких изменений в системе не было.
21 сен 15, 13:42    [18175049]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Glory
Member

Откуда:
Сообщений: 104751
Farhod
Но никаких изменений в системе не было.

А для Deadlock-а не нужны изменения. Достаточно сразу криво написать код.
И просто ждать, когда возникнет конкуренция

Сообщение было отредактировано: 21 сен 15, 13:47
21 сен 15, 13:47    [18175091]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Вообще кого выбрать в качестве жертвы решает сам сервер.
Обычно это более поздний процесс.
Но если отчет создает взаимоблокировки (!?) то "что-то неладно в датском королевстве"!
Нормальный отчет не должен никого сильно тормозить, а уж тем более блокировать!
21 сен 15, 13:48    [18175099]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
Farhod
При открытии отчета возникает ошибка deadlock victim после 10-15 секунд загрузки(сам отчет открывался за 20-30 секунд).
Нужно включить логирование дедлоков, что бы посмотреть причины и начать с ними разбираться.
Farhod
А раньше этот отчет годами работал и не каких проблем не было.
Изменился либо запрос отчёта, либо планы выполнения, либо другие пользователи стали интенсивнее работать. Причин может быть много.
Farhod
Может в настройках sql server-а как-то можно изменить время задержки перед ошибкой?
Дедлок переводится как мёртвая блокировка.
То есть такая, которую нельзя разрешить увеличением времени ожидания, даже если ждать несколько лет, она не "рассосётся" сама собой.
21 сен 15, 13:49    [18175104]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
o-o
Guest
SQL2008
Вообще кого выбрать в качестве жертвы решает сам сервер.
Обычно это более поздний процесс.

ниче не более поздний, а тот, кого проще откатить.
из читателай и писателя проще читателя, т.е. отчет, завернут
21 сен 15, 13:50    [18175114]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
o-o
Guest
SQL2008
Но если отчет создает взаимоблокировки (!?) то "что-то неладно в датском королевстве"!
Нормальный отчет не должен никого сильно тормозить, а уж тем более блокировать!

фигасебе "не должен".
на прошлом месте работы товарищи хотели отчетность поверх живого CRM.
не самописный какой-то отчет, а нагенернный ВО.
туда nolock не вписать.
и что.
в отчете 7 здоровенных таблиц джойнились, ну и все.
постоянный deadlock.
недолго фигня длилась, прекратили его днем запускать, на ночь перенесли, когда CRM отдыхал
21 сен 15, 14:05    [18175260]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Glory
Member

Откуда:
Сообщений: 104751
SQL2008
Нормальный отчет не должен никого сильно тормозить, а уж тем более блокировать!

Любой запрос в MSSQL хоть что-то но блокирует.
Другой вопрос, что не надо блокировать больше, чем нужно, и дольше, чем нужно
21 сен 15, 14:12    [18175318]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
o-o
отчетность поверх живого CRM


Можно попробовать database snapshot за прошлые сутки. В большинстве случаев такой точности достаточно для отчетов.
21 сен 15, 15:01    [18175781]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
o-o
Guest
Владислав Колосов
o-o
отчетность поверх живого CRM


Можно попробовать database snapshot за прошлые сутки. В большинстве случаев такой точности достаточно для отчетов.

оно было 4 года назад, но можете им написать :)
а тогда они сказали НЕТ.
21 сен 15, 15:40    [18176080]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
вот как бывает где этот летний с
Guest
Farhod
А раньше этот отчет годами работал и не каких проблем не было.

так бывает когда проблема изначально присутствует, заложена имеющимся решением, но в силу низкой нагрузки, малых объемов данных, низкой конкуретности не проявляется, т.к. все "успевают" прошмыгнуть.

потом объем накапливается, число пользователей увеличивается - и все становится на свои места.
иногда "становится" в буквальном смысле, намертво.
21 сен 15, 16:02    [18176206]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Farhod

При открытии отчета возникает ошибка


Ключевой момент здесь в слове отчет. Вы пытаетесь сгруппировать некоторый объем данных, возможно большой, который в данный момент меняется другими транзакциями. Вы находитесь в сфере хранилищ данных, а пытаетесь пускать запрос на OLTP базе.

Самое грамотное решение здесь -- не запускать отчёт на боевой среде. Можно выкрутиться (NOLOCK, READPAST, READ COMMITTED SNAPSHOT), но это всё полумеры.

Вам нужно
1) Выгрузить данные в другую БД (в идеале создать хранилище данных)
2) Пускать отчёт там

Тем самым вы не будете толкаться локтями с другими транзакциями в боевой среде. Самое простое -- сделать реплику ваше боевой БД (AlwaysOn или другой вид репликации).

Ваш дедлок признак того, что надо двигаться в этом направлении.
21 сен 15, 18:23    [18177263]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
a_voronin
Вам нужно
1) Выгрузить данные в другую БД (в идеале создать хранилище данных)
2) Пускать отчёт там
По моему, для решения проблем дедлока в 30 секундном отчёте это избыточное решение.

Можно просто сделать nolock, если это позволяет бизнес-логика, либо, если не позволяет, наоборот, залочить все таблицы в критической секции перед выборками. Ну или более интеллектуально разобраться, с выстраиванием порядка локов таблиц.
21 сен 15, 19:06    [18177432]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
MSSQLBug
Guest
Farhod
Я новичок в SQL SERVER, возникла проблема с deadlock victim.

При открытии отчета возникает ошибка deadlock victim после 10-15 секунд загрузки(сам отчет открывался за 20-30 секунд).
А раньше этот отчет годами работал и не каких проблем не было.

Может в настройках sql server-а как-то можно изменить время задержки перед ошибкой?


1. Исправьте ошибку в своём отчёте - сделайте обработку DEADLOCK-а.
2. Посмотрите в сторону ALLOW_SNAPSHOT_ISOLATION + SET TRANSACTION ISOLATION LEVEL SNAPSHOT, если возможно (с MS SQL 2005).
А вообще, можете подумать о DWH, как Вам уже советовали.
21 сен 15, 23:51    [18178227]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7599
Farhod,

Попробуйте установить SET DEADLOCK_PRIORITY выше дефолтного. Понинаю, это - полумера. Но все-же.
22 сен 15, 00:03    [18178245]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Farhod
Member

Откуда:
Сообщений: 46
Relic Hunter
Farhod,

Попробуйте установить SET DEADLOCK_PRIORITY выше дефолтного. Понинаю, это - полумера. Но все-же.


В этом случае отчет открывается, но у других обычных задач deadlock появляется.
22 сен 15, 09:18    [18178737]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Glory
Member

Откуда:
Сообщений: 104751
Farhod
В этом случае отчет открывается, но у других обычных задач deadlock появляется.

Ну так пусть эти другие и волнуются, ваш то отчет работает
22 сен 15, 09:21    [18178749]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Если сабжевый отчет состоит из одного огромного запроса, то можно попробовать разбить его на несколько более простых + вр.таблицы и обернуть все это в ХП.
Если есть view, посмотреть, можно ли их чем нибудь заменить, т.к. в некот. случаях причиной тормозов явл. view (вычисления вокруг и внутри них).
22 сен 15, 09:42    [18178852]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
а то и то и это
Guest
Farhod,

граф хоть один приложи

а то и все кодище отчета
22 сен 15, 10:03    [18178968]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
o-o
Guest
а то и то и это,

а что даст одно кодище отчета?
кто-то же что-то еще и *пишет*, раз дедлок.
если им можно, пускай везде в отчете nolock выставят.
и серверу TF 1222, 1204, чтобы графы в еррорлог клал
22 сен 15, 10:11    [18179011]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
а то и то и это
Guest
o-o,

по фотографии лечить - вполне себе веселое занятие. детектив-с.

"шо там за отчет" который всех в дедлок, а не в длинный вэйт отправляет - мне, например, любопытно.
что ноги растут из всех щелей, так то всем присутствующим переочевидно.
22 сен 15, 10:18    [18179047]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Farhod
Member

Откуда:
Сообщений: 46
Думаю причина в одной таблице.
SELECT и UPDATE ругаются.

К сообщению приложен файл. Размер - 45Kb
22 сен 15, 11:02    [18179266]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock Victim  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
Farhod,

update с подзапросом?
22 сен 15, 11:06    [18179287]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить