AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.02.2009, 17:00   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Администрирование - Запросы - База данных - Журнал трассировки операторов SQL

Туда попадают Deadlock и долгие запросы.
Deadlock - всегда идет по причине блокировок.

Долгий запрос тоже может быть следствием блокировки, поэтому можно просто наложить фильтр по этому логу и проанализировать записи.
Старый 11.02.2009, 18:30   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Не представляю даже как такое можно сделать в разрезе номенклатуры...

Долгие запросы и дедлоки - это хорошо, конечно, но никакой информации по исходному вопросу не дают.

Более того, отследить тот факт, что данный долгий запрос долго работал долго из-за того, что ждал блокировки можно, насколько я понимаю, только на уровне БД. Для таблицы в целом...
__________________
Zhirenkov Vitaly
Старый 11.02.2009, 19:12   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от ZVV Посмотреть сообщение
Не представляю даже как такое можно сделать в разрезе номенклатуры...

Долгие запросы и дедлоки - это хорошо, конечно, но никакой информации по исходному вопросу не дают.

Более того, отследить тот факт, что данный долгий запрос долго работал долго из-за того, что ждал блокировки можно, насколько я понимаю, только на уровне БД. Для таблицы в целом...
Ну конечно я предложил не гарантированный вариант, но хоть что-то.
А отфильтровать по таблице использованной в запросе можно.
Пример во вложении.
Миниатюры
Нажмите на изображение для увеличения
Название: SysTraceSQL.JPG
Просмотров: 426
Размер:	53.3 Кб
ID:	4304  
Старый 11.02.2009, 21:02   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
С учетом того, что блокировка может накладываться не только на запись, но и на страницу, экстент, таблицу или ключ индекса, решение данной задачи мне кажется невозможным.

Ну и не совсем понятно, что даст на практике такая информация.
Старый 11.02.2009, 21:47   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Андре Посмотреть сообщение
С учетом того, что блокировка может накладываться не только на запись, но и на страницу, экстент, таблицу или ключ индекса, решение данной задачи мне кажется невозможным.
Можно в info\add в файл писать весь инфолог.
При обновление этих таблиц всегда setPrefix на номенклатуру есть.
Цитата:
Сообщение от Андре Посмотреть сообщение
Ну и не совсем понятно, что даст на практике такая информация.
Да у меня остатки расходяться с проводками.
Написал джобик он недолго работает 10 минут.
Раз в неделю запускаю 6-8 позиций исправляет.
Но надо решать эту проблему.
Есть подозрения что это из-за блокировок.
Хотю удостовериться в этом или в обратном.
Есть мысль на inventTrans insert и update некую проверку повесить на время поиска откуда ноги растут.
Но очень хочется, чтоб это оказалось из-за блокировок.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 11.02.2009, 22:56   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от miklenew Посмотреть сообщение
Да у меня остатки расходяться с проводками.
..
Есть подозрения что это из-за блокировок
Сами по себе блокировки - не абсолютное зло, как многие считают, а одно из средств обеспечения целостности данных в системе, поддерживающей работу нескольких конкурентных пользователей. И являться причиной неверных остатков в нормально спроектированной системе (а стандартную логику AX в области управления запасами я считаю нормально спроектированной ) не могут

Цитата:
Но очень хочется, чтоб это оказалось из-за блокировок
Увы

Я бы прислушался к совету Wamr

Если все-таки очень хочется найти "горячую" номенклатуру, можно попробовать такой "ход конем":
- настраиваем поголовный мониторинг длинных запросов всем пользователям
- включаем на AOS-е опцию internal=comments (в 3.0 работает, как в других версиях - не знаю). Теперь запрос сохранится со значениями литералов (в комментариях)
- собираем эту статистику какое-то время
- далее анализируем с группировкой (приводим текст запроса к varchar и группируем). Так как запрос "тяжелый", желательно делать это не на работающей системе, а выгрузить SYSTRACETABLESQL в отдельную БД. Еще лучше - на выделенный сервер. Еще лучше - дополнительно обработать табличку, добавив хэш по тексту запроса. Я таким образом строил куб на основе SYSTRACETABLESQL

Но все равно непонятно (с), что это даст. Рискну предположить, что "горячей" окажется наиболее часто продаваемая номенклатура. Предложим пореже продавать? Не оценят
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: Logger (6), Lucky13 (2).
Старый 12.02.2009, 09:36   #7  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Vadik Посмотреть сообщение
Сами по себе блокировки - не абсолютное зло, как многие считают, а одно из средств обеспечения целостности данных в системе, поддерживающей работу нескольких конкурентных пользователей. И являться причиной неверных остатков в нормально спроектированной системе (а стандартную логику AX в области управления запасами я считатаю нормально спроектированной ) не могут
Могут. Сам делал руками кривые проводки на стандарте Ax 3.0 sp4.
Долго подбирал данные, но смог подобрать.
Правда транзакции там ни причем были.
А потом мне нужно это найти не на стандарте.
Прилага на 80% модифицирована по формуле mazzy.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 27.02.2009, 21:55   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Vadik Посмотреть сообщение
включаем на AOS-е опцию internal=comments (в 3.0 работает, как в других версиях - не знаю). Теперь запрос сохранится со значениями литералов (в комментариях)
Спасибо за ценную инфу. Очень не хватало такой информации. Правда при использовании обнаружил один баг. - Иногда такое логирование неверно отображает значение параметра.

Как обнаружил - накладывал фильтр по таблице по полю modifiedDate
фильтр такой
X++:
...Addrange(...).value(date2strXpp(systemDateGet()));
отладочная инфа показала что на оракл уходит запрос
AND (MODIFIEDDATE=:IN2/*1900/1/1*/)
а datasource(1).tostring() выдал строку
SELECT * FROM VendTable WHERE (((modifiedDate = TO_DATE('2009-02-27 00:00:00','YYYY-MM-DD HH24:MI:SS'))))

Реально же вернулась нужная строка. Так что получается что для определенных значений параметров логирование SQL-запросов может показать неверную информацию.
Старый 12.02.2009, 02:15   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от miklenew Посмотреть сообщение
Да у меня остатки расходяться с проводками.
Блокировки не могут быть причиной такого расхождения. Ищите в другом месте.

Исключение - работа системы множественных складских транзакций. Но опять же там причина такого расхождения не в блокировках, а в прерывании работы системы, когда откатывается транзакция обновляющая inventTrans, но не откатывается транзакция обновлявшая inventsum. По Inventsumlogtts можно найти такие проблемы - если там есть записи с committed == 0
Но по идее Аксапта сама раз в 600 секунд делает эту проверку и таким образом восстанавливает соответствие InventTrans и InventSum
Старый 13.02.2009, 17:35   #10  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от miklenew Посмотреть сообщение
Да у меня остатки расходятся с проводками.
Написал джобик он недолго работает 10 минут.
Раз в неделю запускаю 6-8 позиций исправляет.
Но надо решать эту проблему.
Есть подозрения что это из-за блокировок.
По первому предложению создается стойкое ощущение, что у вас InventSum != сумме InventTrans по полям ItemId & InventDimId.

Такое расхождение может возникнуть только при использовании doUpdate на InventTrans. Так как в update, insert, delete происходит обновление InventSum, то есть они всегда обновляются в паре.

Или я что-то опять не так понял?
Старый 13.02.2009, 20:18   #11  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Wamr Посмотреть сообщение
По первому предложению создается стойкое ощущение, что у вас InventSum != сумме InventTrans по полям ItemId & InventDimId.
Всё правильно.
Цитата:
Сообщение от Wamr Посмотреть сообщение
Такое расхождение может возникнуть только при использовании doUpdate на InventTrans.
Я конечно поищу. Но всё же уже больше года работаю с этой прилагой и ламерских косяков в ней пока не встречал. Ошибки есть, я их исправляю, но не до такой же степени. В целом нормально, жить можно. Когда-то хорошую школу прошёл у человека, который учился у тебя. Сначала он у тебя, потом я у него.
Здесь степень модификаций (по формуле mazzy) даже чуть по меньше, чем у нас было на общем месте работы. Так что не привыкать.
Отвлёкся.
Цитата:
Сообщение от Wamr Посмотреть сообщение
Так как в update, insert, delete происходит обновление InventSum, то есть они всегда обновляются в паре.
Или я что-то опять не так понял?
Всё правильно. Но классы то InventUpdate и InventMovement модифицированы, есть даже сильные утверждения, которые архитиктуры связей меняют. Сильно измененена связь InventTrans -> InventTransPosting.
Резервирование сильно переделано.
Блокировки я уже откинул.
Вчера сделал пересчёт InventSum. Сегодня появилось две позиции.
Причём по этим номенклатурам блокировок не было.
Буду дальше искать.
Эта проблема замечена была несколько месяцев назад.
Пересчёт InventSum-а раз в неделю помогал.
Просто текучки хватало. Щас посвободнее стало вот и решил пора искать.
Найду.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.

Последний раз редактировалось miklenew; 13.02.2009 в 20:20.
Теги
internal, блокировка, лог, поиск ошибок, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Главная книга / Запросы / Аудит (TransactionLog) Зачем и кому он нужен? ta_and DAX: Функционал 18 24.09.2008 10:14
Эскалация блокировок в MSSQL fomenka DAX: Администрирование 6 24.04.2007 06:02
сброс блокировок при update somebody DAX: Программирование 3 27.03.2007 11:31
?Аудит пользователей Axapta Gray DAX: Администрирование 4 09.06.2004 07:08
Описание функциональности модуля "Аудит действий пользователей системы" D.Cheprasov DAX: Прочие вопросы 2 22.03.2004 04:32
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:08.