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

Откуда:
Сообщений: 137
Система
+
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)



Суть проблемы перестал считаться куб, выясняя причину, была выявлена взаимоблокировка (deathlock) ресурсов:
Ошибка OLE DB: Ошибка OLE DB или ODBC : Транзакция (идентификатор процесса 100) вызвала взаимоблокировку ресурсов блокировка | буфер связи с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.; 40001.


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


П.С.: Не могу точно сказать связано это или нет, но измерение формируется из данных представления, которое в свою очередь в запросе использует некоторые реплицируемые таблицы. Репликация некоторое время назад из-за проблем с железом слетела и была восстановлена. В процессе поломки или восстановления часть индексов на некоторые реплицируемые таблицы на стороне подписчик слетели, но были восстановлены с помощью сохраненных скриптов. Не знаю важные эти моменты или нет, но на всякий случай озвучиваю.

К сообщению приложен файл (взаимоблокировка.zip - 11Kb) cкачать
4 май 17, 08:36    [20455247]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
Ну что есть у кого какие-нибудь мысли, хотя бы в каком направлении рыться?
4 май 17, 10:23    [20455669]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2394
nk13,

олап систему на отдельный сервер, вначале заливка (+трансофрмация) данных, потом пересчеты кубов -
чтобы не блокировалось ни с чем
4 май 17, 10:32    [20455708]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
StarikNavy,
1) Олап - на отдельном сервере
2) Вы имеете ввиду отделить все таблицы, используемые кубами от репликаций. Мысль в принципе верная, так и стараюсь делать, но данная реализация была еще сделана до меня, да и в принципе можно проверить, отключив отдельные публикации на время (потом переинициализирую).

Сейчас проверю.
4 май 17, 10:38    [20455734]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2198
nk13,
Попробуйте записать данные из представления в таблицу (select into from). Если всё пройдет нормально - переименуйте старое представление и сделайте представление на вновь созданную табличку - в результате отпроцессится куб. И можно разбираться дальше.

Очень похоже, что вот причина блокировки:


<process id="processc24769868" taskpriority="0" logused="444" waitresource="PAGE: 7:1:133801494 " waittime="24359" ownerId="134583960" transactionname="user_transaction" lasttranstarted="2017-05-04T12:21:56.807" XDES="0x5d616ad08" lockMode="IX" schedulerid="10" kpid="16616" status="suspended" spid="58" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2017-05-04T12:22:01.860" lastbatchcompleted="2017-05-04T12:21:56.803" lastattention="1900-01-01T00:00:00.803" clientapp="SQL_Axapta_base_test2_Customer" hostname="SQL" hostpid="10944" loginname="HOLDING\pioneer" isolationlevel="read committed (2)" xactid="134583960" currentdb="7" lockTimeout="4294967295" clientoption1="671156320" clientoption2="128056">
<executionStack>
<frame procname="OlapBase.dbo.sp_MSupd_dboCUSTTABLE" line="331" stmtstart="38550" stmtend="68110" sqlhandle="0x03000700e49f386f439c390157a7000001000000000000000000000000000000000000000000000000000000">
update [dbo].[CUSTTABLE] set
4 май 17, 10:41    [20455750]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2198
nk13
StarikNavy,
1) Олап - на отдельном сервере
2) Вы имеете ввиду отделить все таблицы, используемые кубами от репликаций. Мысль в принципе верная, так и стараюсь делать, но данная реализация была еще сделана до меня, да и в принципе можно проверить, отключив отдельные публикации на время (потом переинициализирую).

Сделайте полную реплику вашей аксаптовской базы на отдельном сервере и уже с этой копии формируйте куб. Мы именно так делаем, разве что у нас навик, а не аксапта.
4 май 17, 10:43    [20455767]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

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

Да Customer одна из публикаций, временно ее отключил. Если без нее будет работать, то задача действительно будет решена, по-быстрому вместо представления сделаю обычную таблицу и в джоб добавлю скрипт для добавления данных. Странно будет только то, что столько времени это работала и проблема не возникала, что в принципе нормально, так там данные меняются только в рабочее время, а куб считается в ночное. Ночью что ли кто-то что-то делал, не понятно. :) Ну в любом случае нужно к нормальному ви ду привести.
Что касается полной реплики БД, то это не требуется, берется только необходимая для кубов часть (частично репликациями, частично с помощью пакетов IS).
4 май 17, 11:06    [20455870]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
o-o
Guest
я чего-то не понимаю, при чем тут тот факт, что таблица опубликована?
ее модифицируют во время пересчета куба,
реплицируй-не реплицируй, при чем тут это?

ваше OlapBase.dbo.CUSTTABLE со своим индексом I_077ACCOUNTIDX
модифицирует аксапта, начиная с индекса, на нем Х.
теперь этой же аксапте надо поменять саму таблицу, а там сидит олап с S.
олап же хочет S и на индекс, а там Х.
приехали, олап откатили.
репликация при чем тут?
4 май 17, 11:20    [20455989]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2198
nk13
Что касается полной реплики БД, то это не требуется, берется только необходимая для кубов часть (частично репликациями, частично с помощью пакетов IS).

Тяжелые отчеты вы тоже прямо на рабочей базе формируете?
4 май 17, 11:26    [20456027]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
o-o
Guest
наверное, все же CUSTTABLE подписана?
может, она не нужна в реальном времени и ее снэпшотом передавать?
4 май 17, 11:35    [20456078]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
s_ustinov,
Нет конечно, все необходимые таблицы для отчетов также находятся на сервер с Олап.
4 май 17, 12:32    [20456422]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
o-o,
Как вариант возможно, но немного по другому хочу сделать.

А вообще всем гигантское спасибо за помощь.
4 май 17, 12:36    [20456433]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
o-o
наверное, все же CUSTTABLE подписана?
Подписана. Это видно по "procname="OlapBase.dbo.sp_MSupd_dboCUSTTABLE".


nk13,

Измените расписание distribution-агента так, чтобы оно не пересекалось с пересчетом куба.
Либо, если позволяют ресурсы, включите для БД RCSI.
4 май 17, 12:38    [20456448]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
o-o,

ее модифицируют во время пересчета куба,
реплицируй-не реплицируй, при чем тут это?


Если честно, не до конца понял суть вопроса. Вы имеете ввиду, что одновременное присутствие индексов у таблицы и на издателе и на подписчике вызывает одновременную блокировку исходной таблицы или что имеется ввиду? Не соображу, о чем вы пишите.
4 май 17, 12:43    [20456476]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
invm, раньше так и было, но сейчас это сделать не получится, просто буду вытаскивать данные с реплицированной таблицы на стороне олапа в ее копию запросом, а уже из нее формировать измерение в кубе.
4 май 17, 12:45    [20456486]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
Я не правильно выразил мысль. Расписание агента конечно можно поменять, но к реплицированным данным может обращаться и другие кубы в разное время, проще просто избавиться от использования представлений при формировании кубов. Как мне кажется это более надежный вариант, чем подгонять расписание или делать репликацию снимками, да и уменьшает риски большой единовременной нагрузки в связи единовременным перемещением большого количества данных.
4 май 17, 12:50    [20456509]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
o-o
Guest
nk13
o-o,

ее модифицируют во время пересчета куба,
реплицируй-не реплицируй, при чем тут это?


Если честно, не до конца понял суть вопроса. Вы имеете ввиду, что одновременное присутствие индексов у таблицы и на издателе и на подписчике вызывает одновременную блокировку исходной таблицы или что имеется ввиду? Не соображу, о чем вы пишите.

вы написали, что таблица опубликована.
а она подписана.
неважно уже, все все поняли.
если бы вы ее еще куда-то реплицировали, вот это было б ни при чем
4 май 17, 13:16    [20456703]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2394
nk13
проще просто избавиться от использования представлений при .

и как это поможет? )
у вас запрос от куба к таблице, которую в этот момент модифицируют, и при чем здесь реализация этого запроса - через представление, или без?
4 май 17, 13:18    [20456720]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
o-o
Guest
теперь я не понимаю, какая разница, через представление вы читаете таблицу или нет.
блокируется же все равно таблица, а не представление.
если не менять расписание, так и будут у вас модифицировать то, что куб читает
4 май 17, 13:19    [20456734]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с сообщением profiler по причине взаимоблокировки  [new]
nk13
Member

Откуда:
Сообщений: 137
o-o,
StarikNavy,

Да похоже вы правы.
Получается все же надо с расписанием мутить.
4 май 17, 13:24    [20456783]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить