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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.02.2007, 14:26   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от laptev Посмотреть сообщение
To mazzy
Модифицировалось автоматическое создание журнала инвентаризации, как самая тяжёлая задача.
Создание журнала инвентаризации - самая простая задача
http://axapta.mazzy.ru/lib/journaltrans_insert/

Цитата:
Сообщение от laptev Посмотреть сообщение
Цитата:
Сообщение от mazzy Посмотреть сообщение
Сколько пользователей работало одновременно с вашей проверкой?
Одновременно (теоретически) могут запустить инвентаризацию не более 3-х пользователей.
Это почему же?

А сколько человек одновременно с вами создавало складские проводки?

Цитата:
Сообщение от laptev Посмотреть сообщение
Цитата:
Сообщение от mazzy Посмотреть сообщение
Что сказали пользователи пока работал ваш отчет?
Пользователи не ругались. Наоборот.
Ну, хоть так.

Цитата:
Сообщение от laptev Посмотреть сообщение
Цитата:
Сообщение от mazzy Посмотреть сообщение
Задача программиста - повысить ОБЩУЮ производительность работы. Чтобы все пользователи системы работали относительно быстро. Чтобы не было такого, что один работает, а остальные курят бамбук. Особенно на многогигабайтных данных.
Стандартный алгоритм создания журнала инвентаризации работал 2..22 часа.
Остальные пользователи в это время с трудом проводили любые складские операции.
"Работал" или давал оценку?
Оценку алгоритм дает исходя из максимального количества строк, которое вы задали в диалоге.
А не на основании фактического количества.

Странно. А длинные запросы у себя отслеживали?
http://axapta.mazzy.ru/lib/querytuning/

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

Это не повод делать заплатку, которая через некоторое время превратиться в узкое место.
Это повод проанализировать проблемы быстродействия вашей системы в целом.
__________________
полезное на axForum, github, vk, coub.
Старый 22.02.2007, 15:00   #2  
laptev is offline
laptev
Участник
 
26 / 10 (1) +
Регистрация: 03.05.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
"Работал" или давал оценку?
Оценку алгоритм дает исходя из максимального количества строк, которое вы задали в диалоге.
А не на основании фактического количества.

Странно. А длинные запросы у себя отслеживали?
Да, время выполнения запросов (а также всех строк кода) отслеживали с помощью Profiler'a.
Запросы выполняются достаточно быстро (в среднем ~ 20 мс).
НО!
В стандартном механизме создания строк журнала инвентаризации для расчёта количества inventJournalTrans.inventOnHand используется класс InventSumDate (а это уже не один запрос, а 10-20).
Плюс на подготовку и запись строки 150мс.
Итого в среднем на строку 500мс.
Если 30 000 строк: 30 000 * 0,5 (с) / 3600 (с/час) = 2,8 часа. Это долго.
Что тут можно оптимизировать? Наверное, только модифицировать алгоритм... В том числе и алгоритм записи строк.
Старый 22.02.2007, 15:08   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от laptev Посмотреть сообщение
НО!
В стандартном механизме создания строк журнала инвентаризации для расчёта количества inventJournalTrans.inventOnHand используется класс InventSumDate (а это уже не один запрос, а 10-20).
Что-то вы путаете...
Пока читайте здесь http://axapta.mazzy.ru/lib/inventsumdate/

Пошел считать количество запросов.
__________________
полезное на axForum, github, vk, coub.
Старый 22.02.2007, 15:33   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от laptev Посмотреть сообщение
В стандартном механизме создания строк журнала инвентаризации для расчёта количества inventJournalTrans.inventOnHand используется класс InventSumDate (а это уже не один запрос, а 10-20).
Во-первых, инициализация происходит в методе класса
InventCountCreate_Base.createInventJournalTrans

Во-вторых, вызывается InventSumDatePhysicalDim:nHandQty(...)

В-третьих, вызывается не 10-20 запросов, а 5
1. inventsum
2. для разнесенных финансово (для вычитания из inventSum)
3. для разнесенных физически (для вычитания из inventSum)
4. для скомплектованных (для вычитания из inventSum)
5. для зарегистрированных (для вычитания из inventSum)

Если вы сумели получить эти данные ОДНИМ(!) запросом, снимаю шляпу.
Но, скорее всего, вы написали ваш единственный исходя из сильно упрощенных предположений.

Кстати, если у вас не используется комплектация/регистрация/физические разноски, то запросы по ним должны выполняться очень быстро, поскольку должны возвращать пустой recordset. Если же вы используете, то 2,3,4,5 запросы при правильной работе должны возвращать очень небольшую выборку...

Скорее всего, тормоза в стандартном запросе связаны не с количеством запросов,
а с наличием index hint'ов. Но index hint и вообще index'ы надо настраивать для всей системы.

В общем, не убедили.
Скорее всего, вы просто не ухаживаете за вашей Аксаптой.
Скорее всего, при переписывании вы сильно упрощаете и обрезаете свой функционал (в дальнейшем вам будет очень сложно его включить обратно)
__________________
полезное на axForum, github, vk, coub.
Старый 22.02.2007, 15:39   #5  
laptev is offline
laptev
Участник
 
26 / 10 (1) +
Регистрация: 03.05.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
Скорее всего, тормоза в стандартном запросе связаны не с количеством запросов,
а с наличием index hint'ов. Но index hint и вообще index'ы надо настраивать для всей системы.
Очень может быть. До index hint'ов руки ещё не дошли. Будем работать!
Спасибо за подробные ответы.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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