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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.07.2012, 11:19   #1  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Ну это срабатывает для всяких тупых отчетов, с кучей удобств для пользователя. Там обычно временную таблицу заполняют в серверном классе (с кучей функциональности), а потом передают на клиентскую форму, в которой приделывают всякие группировки и суммирования с подитогами. Конечно - лучше бы все это делать в каком-нить OLAPе, но это не всегда возможно, да и партнерские программисты зачастую просто не владеют OLAPом этим. И если нужно быстро подоптимизировать чужой кривой код, то трюк с передачей временных таблиц через контейнер, иногда заметно понижает время отклика...
Старый 27.07.2012, 11:22   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от fed Посмотреть сообщение
Ну это срабатывает для всяких тупых отчетов, с кучей удобств для пользователя. Там обычно временную таблицу заполняют в серверном классе (с кучей функциональности), а потом передают на клиентскую форму, в которой приделывают всякие группировки и суммирования с подитогами. Конечно - лучше бы все это делать в каком-нить OLAPе, но это не всегда возможно, да и партнерские программисты зачастую просто не владеют OLAPом этим. И если нужно быстро подоптимизировать чужой кривой код, то трюк с передачей временных таблиц через контейнер, иногда заметно понижает время отклика...
Эм.
Я правильно понимаю, что речь идет о выводе данных на стороне клиента (через запросы с группировками)?
__________________
Axapta v.3.0 sp5 kr2
Старый 27.07.2012, 11:45   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от AndyD Посмотреть сообщение
Эм.
Я правильно понимаю, что речь идет о выводе данных на стороне клиента (через запросы с группировками)?
Правильно. Не - ты не думай, я сам такой хрени стараюсь не писать. Но бывает что малограмотные программисты какой-то отчет сбацали и надо его быстренько привести в чуство. В этой ситуации помогает выкидывание логики сбора данных в серверный класс, а затем перекачка данных между тиерами исполнения через контейнер. Конечно мегаускорения это не дает, но время от времени подтормаживания убирает.
Старый 27.07.2012, 11:51   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от fed Посмотреть сообщение
Правильно. Не - ты не думай, я сам такой хрени стараюсь не писать. Но бывает что малограмотные программисты какой-то отчет сбацали и надо его быстренько привести в чуство. В этой ситуации помогает выкидывание логики сбора данных в серверный класс, а затем перекачка данных между тиерами исполнения через контейнер. Конечно мегаускорения это не дает, но время от времени подтормаживания убирает.
Не понятно, зачем в этом случае надо передавать таблицу целиком на клиента? Почему нельзя запрос выполнить для серверного курсора и его же вывести в гриде или где он там используется? Сервер сам по себе шустрее клиентского компа, да и передаваться будут уже агрегированные данные. Опять же, не забываем об клиентском кэшировании на датасорсах
__________________
Axapta v.3.0 sp5 kr2
Старый 27.07.2012, 12:05   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от AndyD Посмотреть сообщение
Не понятно, зачем в этом случае надо передавать таблицу целиком на клиента? Почему нельзя запрос выполнить для серверного курсора и его же вывести в гриде или где он там используется? Сервер сам по себе шустрее клиентского компа, да и передаваться будут уже агрегированные данные. Опять же, не забываем об клиентском кэшировании на датасорсах
Потому что во многих случаях, эту таблицу просто не будут группировать и сортировать. А учитывая что зачастую клиенты работают через тормозной WiFi, чуть большее быстродействие AOS (по сравнению с клиентским рабочим местом), будет начисто убито медленной и печальной перекачкой таблицы по одной записи, если пользователь попробует по ней побровзится. Ну то есть - я не уверен что во всех случаях перекачка контейнером выгодна, но поскольку она мне несколько раз заметно помогла, а ее использую по умолчанию так сказать...
Старый 27.07.2012, 11:51   #6  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Цитата:
Сообщение от fed Посмотреть сообщение
Ну это срабатывает для всяких тупых отчетов, с кучей удобств для пользователя. Там обычно временную таблицу заполняют в серверном классе (с кучей функциональности), а потом передают на клиентскую форму, в которой приделывают всякие группировки и суммирования с подитогами. Конечно - лучше бы все это делать в каком-нить OLAPе, но это не всегда возможно, да и партнерские программисты зачастую просто не владеют OLAPом этим. И если нужно быстро подоптимизировать чужой кривой код, то трюк с передачей временных таблиц через контейнер, иногда заметно понижает время отклика...
Именно такой тупой отчет и оптимизировал Группировки на сервере сократили время выполнения в разы.
От предложенной версии OLAP и/или SSRS заказчик отказался (((

Также тестировал передачу записи по одной (вместо контейнера) - общее время примерно то же самое (5 мин для 100тыс записей). Похоже все-таки это не один вызов RPC, а та же самая куча...

Также пробовал сериализовать в XML - траффик растет примерно раз в 10 + много времени тратится на сериализацию-десериализацию (для тех же 100 тыс. было около 15 мин, если не ошибаюсь)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
передача бинарных файлов с клиента на AOS и обратно corvax DAX: Программирование 9 01.04.2014 15:05
Join временной таблицы в запросе yahenz DAX: Программирование 12 24.04.2012 14:59
Display метод временной таблицы выполняется в компании DAT S.Kuskov DAX: Программирование 4 15.04.2011 20:11
Передача временной таблицы в batch DTD DAX: Программирование 10 30.04.2008 13:55
Передача временной таблицы 6apcyk DAX: Программирование 11 09.08.2006 17:32

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

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

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