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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.09.2015, 10:49   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от trud Посмотреть сообщение
Какая интересно задача привела к такой проблеме?
закрытие склада, сопоставление. и подобные задачи.
там где ведется поиск первых подходящих записей...
а после того, как найдено, выполняется обработка, которая меняет входящий набор. в результате (языком аксапты) приходится делать queryrun.reset

Цитата:
Сообщение от trud Посмотреть сообщение
т.е. что мешает из квери просто выбрать 100 записей и остановиться или продолжить если нужно.
никто не мешает.
правда SQL напрягается и готовит результаты для всей выборки, а не для 100 записей.
а в выборке может быть 100500+ записей

Цитата:
Сообщение от trud Посмотреть сообщение
и откуда уверенность что
"в режиме paging SQL должен использовать существенно меньше памяти для хранения результатов выборки. а также готовить результат гораздо быстрее."
Ну, конечно же с Аксаптой у меня никакой уверенности нет )
Поэтому и спрашиваю.

А вообще говоря, весь интернет именно на этом и живет - без paiging ни один боль-мень серьезный форум, ни один фейсбук-вконтакт не выживет. я ж привел ссылку "идея разбиения на страницы, например, здесь http://www.quizful.net/post/paging-in-sql " можно еще поискать.

Цитата:
Сообщение от trud Посмотреть сообщение
как минимум если будет сортировка не по индексам это не так
бггг. вообще говоря, выборка индексов и выборка данных по найденным индексам - на SQL - это разные вещи Думаю, что стоит почитать теорию.

Давайте вернемся к вопросу.
В Аксапте кто-нибудь этот paging использовал?

Последний раз редактировалось mazzy; 25.09.2015 в 10:52.
Старый 27.09.2015, 14:53   #2  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
А вообще говоря, весь интернет именно на этом и живет - без paiging ни один боль-мень серьезный форум, ни один фейсбук-вконтакт не выживет.
Я думаю, что вы немного неправильно употребляете термин пагинация (paging). Пагинация это механизм, с помощью которого можно "отдавать" данные определёнными порциями. В терминах MVC (Model-View-Controller) это C (Controller). По ссылке, которую вы привели, речь идёт как раз о том, как можно отдавать клиенту небольшое количество записей. Здесь ключевое слово "отдавать", а не получать. То есть чтобы по HTTP-запросу клиенту ушло не все 1000 записей, которые он должен будет потом как-то отображать, а только какую-то порцию, часть этих данных, например 20 записей. При этом, сам запрос не оптимизируется настолько сильно, что он будет обрабатывать меньшее количество записей. Конечно, для простых запросов оптимизатор СУБД сможет построить план с помощью которого будут выбраны те самые 20 записей или несколько больше. Но для более сложных запросов операции TOP или условие по ROW_NUMBER будут выполняться уже в качестве фильтра, то есть отсекать лишние записи. Именно поэтому вы видите большее количество по счётчикам в SQL Server: сервер выбирает множество записей, но клиенту возвращается только часть этих данных.

Facebook, VK и другие используют витрины данных, в которых находятся актуальные данные, например, за последнюю неделю или день. Также они использую горячий кэш и другое.

Кстати, витрины данных очень часто используются в DWH: когда в хранилище есть данные за 20 лет, а, фактически, для оперативного анализа нужны данные только за последнюю неделю. В качестве решения делают витрину данных, куда с помощью ETL/ELT собирают нужные актуальные часто используемые данные. Даже in-memory системы у которых время выполнения "запроса" на порядки меньше чем у ROLAP, также используют витрины. Иначе не хватит никакой памяти :-) Также можно подумать о партицировании таблицы: то есть физически разбивать таблицу на несколько более мелких таблиц. Этот метод очень активно используется в SSAS на более-менее крупных данных.

В AX хорошим примеров витрины данных является InventSum.
За это сообщение автора поблагодарили: mazzy (2), Weez (1).
Старый 28.09.2015, 11:52   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Посмотри методы в классе SysEPDeployment deployCompanyImages() -> loopOverImagesInPartition() -> getImagesFromPartition() (это в AX 2012).
ага. спасибо. посмотрю.

Цитата:
Сообщение от Vadik Посмотреть сообщение
Сначала определись, это "заморачивание ради заморачивания" или есть конкретная проблема которую надо решить. В моем случае...
чтобы определиться, сначала нужно понять то ли это, что нужно.
поэтому и спрашиваю опыт работы, впечатления и ссылку на доку.

Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Я думаю, что вы немного неправильно употребляете термин пагинация (paging). Пагинация это механизм, с помощью которого можно "отдавать" данные определёнными порциями. В терминах MVC (Model-View-Controller) это C (Controller). По ссылке, которую вы привели, речь идёт как раз о том, как можно отдавать клиенту небольшое количество записей.
...
В AX хорошим примеров витрины данных является InventSum.
Возможно и неправильно.
Да, клиент запрашивает порцию, а SQL отдает и готовит только порцию, а не всю выборку. Да, у SQL возникают дополнительные накладные расходы когда запрашивается порция, близкая к концу выборки.

но я не зря начал говорить про операции типа "сопоставление" )))
см. начало ветки.

да, про витрины данных понял.

==========================
мне коллеги подсказали доку. оказывается есть описалово.
оказывается по-русски это называется "подкачка данных". кто бы мог подумать!

дока в книге "Справочник профессионала. Microsoft Dynamics AX 2009".
Авторы Ларс Олсен и прочие.
вышло в 2009 году под патронажем АНД Проджект
Скриншоты:
https://yadi.sk/i/mSWTMBbKjNH8H
https://yadi.sk/i/9xTQDYjAjNHAs
https://yadi.sk/i/buBvwyYCjNHCw
https://yadi.sk/i/yfToQi9sjNHEB

Да, как я и ожидал, используется ROW_NUMBER со всеми его ограничениями, достоинствами и недостатками.
https://msdn.microsoft.com/ru-ru/lib...=sql.110).aspx
https://support.microsoft.com/ru-ru/kb/186133

Спасибо!
За это сообщение автора поблагодарили: Maxim Gorbunov (2), Dumfag (1).
Старый 28.09.2015, 12:05   #4  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
Да, клиент запрашивает порцию, а SQL отдает и готовит только порцию, а не всю выборку.
Не совсем так. SQL Server будет обрабатывать все 1000 записей или более, потом наложит на них ограничение в виде TOP или ROW_NUMBER и выдаст как раз те самые 10 записей. Для простых запрос, возможно, получиться сократить объём обрабатываемых данных до 900 записей, а может и не получится.
Теги
paging, подкачка данных

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Microsoft Dynamics AX general performance analysis scripts page 5 Blog bot DAX Blogs 0 01.09.2014 14:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
daxmusings: Query and New Related Objects in AX 2012 Blog bot DAX Blogs 0 28.09.2011 10:11
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
Справка в файлах *.chm на русском у кого есть? ture DAX: Функционал 14 18.02.2004 19:21

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:52.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.