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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2011, 10:49   #41  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
Так в чем причина такого поведения ?
Ограниченность X++ на котором не выразишь все идеи, которые можно сделать одним запросом на SQL ? Или накладные расходы внутри аоса при разборе полученной выборки и передаче её в X++ ?
Одно следствие другого. Факт ограниченности X++ в данном вопросе приводит к катастрофическому росту накладных расходов. X++ просто физически не может решить задачу по другому.

Если смотреть "шире", то приложение, "заточенное" на оптимизацию процедур модификации данных не может с равным успехом (в смысле оптимизации скорости выполнения) использоваться для формирования отчетности. Либо оптимизируем одно, либо оптимизируем другое. Одновременно - не получается.

Отсюда, собственно, и возникли идеи хранилищь данных, например, для кубов OLAP. Нужна специфическая структура данных для быстрой генерации отчетов. Приципиально отличающаяся от структуры данных, использующихся для модификации данных.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Aleks_K (1).
Старый 27.12.2011, 11:20   #42  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Lightbulb
Цитата:
Сообщение от AndyD Посмотреть сообщение
Прошу прощения, а что имеет в виду под "Отсортированной таблицей"?
И как в этой таблице искать?
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Уточню вопрос. Чем поиск по отсортированной таблице отличается от поиска по неотсортированной?
Судя по вопросу, вы не очень поняли смысл написания на Х++ процедуры выборки по двум таблицам.

Для начала отвечу на ваш вопрос: в отсортированной таблице можно использовать метод поиска делением пополам. НО с точки зрения нашей задачи это не важно.

Я не уточнял вопрос по задаче, в надежде, что вы догадаетесь. Уточняю задачу: требуется написать алгоритм для того чтобы определить какие индексы вы сможете использовать не перестраивая их в процессе выборки.
Инструменты: вместо таблиц я предложил использовать контейнеры, и не использовать conFind(). Для простоты будем считать что по контейнеру в котором у нас храниться индекс conFind() можно использовать. Ответ на задачу пока не даю - попробуйте решить самостоятельно.
Старый 27.12.2011, 12:26   #43  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
А можно я о своем, о мелком?

Поиск делением пополам на биллионах записей - это вы предлагаете, как альтернатива B-Tree?
__________________
Axapta v.3.0 sp5 kr2
Старый 27.12.2011, 12:46   #44  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Цитата:
Сообщение от AndyD Посмотреть сообщение
А можно я о своем, о мелком?
Поиск делением пополам на биллионах записей - это вы предлагаете, как альтернатива B-Tree?
Ну раз вы знаете, что такое B-Tree, то вам будет несложно посчитать количество элементарный операций для поиска делением пополам и для поиска в B-Tree. Сделайте пожалуйста такую табличку, где видно максимальное количество элементарный операций для двух методов B-Tree и для поиска делением пополам для разного количества записей в таблице: для 1e+1, для 1e+2 записей, для 1е+3 записей..... и так до гугла (1е+100) можно с шагом 3 (т.е. тысяча, миллион, биллион.....). Надо сказать, что эта таблица с достаточной точностью считается в уме (без калькулятора), для тех кто помнит, что два в десятой это приблизительно 10 в третьей.

Чтобы не мучиться скажу вам сразу - разницы почти не будет..., точнее она будет не в ползу B-Tree. Это по тому, что мы смотрим на максимум элементарных операций, а B-Tree подразумевает большую рыхлость данных. Эта рыхлость эффективна при апдейтах а вот при поиске она дает лишние циклы...
Старый 27.12.2011, 13:01   #45  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Мартынов Дмитрий Посмотреть сообщение
Чтобы не мучиться скажу вам сразу - разницы почти не будет..., точнее она будет не в ползу B-Tree. Это по тому, что мы смотрим на максимум элементарных операций, а B-Tree подразумевает большую рыхлость данных. Эта рыхлость эффективна при апдейтах а вот при поиске она дает лишние циклы...
А вы учитываете, что дерево балансируется относительно значений хранящихся в таблице, а ваш "класический индекс" относительно их размера/местоположения? Т.е. вы допускаете, что величины в вашем биллионе записей могут быть распределены неравномерно?
Старый 27.12.2011, 13:26   #46  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Речь идет об идеальной ситуации или мы как-то привязаны к тому, что имеем сейчас?
__________________
Axapta v.3.0 sp5 kr2
Старый 27.12.2011, 14:04   #47  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,200 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Процитирую сам себя (это про выполнение запроса SomeOne):
Цитата:
Сообщение от Zabr Посмотреть сообщение
Возвращает результат (10 тыс строк) за 5 мин 22 сек - очень даже есть что оптимизировать.
Мда. Тот же запрос на Х++ в Аксапте выполняется за 30 секунд.
Старый 27.12.2011, 15:19   #48  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Мартынов Дмитрий Посмотреть сообщение
Если мы не имеем аппаратных средств копирования блоков памяти, то при качественном проектировании БД В-дерево проиграет классическому индексу. Кстати и в обратную сторону - если у нас есть аппаратные средства сортировки то опять же сортировка выиграет
..
Зависит конечно, но по сути не зависит
Дмитрий, есть предложение вернуться к решению задачи поставленной в начале ветки (напомню - ускорение оборотки по складу за счет добавления InventLocationId в InventTrans) на основе коммерчески доступных в данное время в данной галактике технологий (AX, X++, SQL Server \ Oracle). Если по существу добавить нечего - пожалуйста, воздержитесь от увода ветки в оффтопик
__________________
-ТСЯ или -ТЬСЯ ?
Старый 28.12.2011, 20:55   #49  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Коллеги, добрый вечер.
Был занят, поэтому не мог принимать участие в дискуссии..Многие моменты, о чем здесь говорилось, заинтересовали.
Началось все с того, что на протяжении многих лет, оборотка(и другие отчеты, написанные в 2003-4 году) стали немного напрягать по времени выполнения. Да они выполняются 3-6 минут, но это все равно как-то долговато. Особенно, если тебе звонит бухгалтер и говорит, что у него не идет что-то с обороткой ( ждать немного раздражает ). Сразу скажу, что у нас построение оборотки основаано на inventSum. Естественно, все оборотки чаще всего смотрятся в разрезе склада.
Тест происходил следующим образом : Запустил оборотку c InventDim, замерил время выполнения всех запросов в алгоритме (время вывода на экран не в счет) - 3 мин. Далее перенес склад в InventTrans, как указал выше. Единственное, что забыл сказать - я проиндексировал склад. Запустил. Время выполнения 20 сек.На этом мое тестирование закончилось. Я вынес предввыводы для себя и захотел услышать мнение других людей.
После того, как я полностью прочитал ветку, засомневался, и сегодня протестировал это более тщательно.А именно, после запуска оборотки, которая использует inventLocationid в inventtrans, я снова запустил оборотку старого образца. Увидел, что она стала выполняться за 32 секунды. Т.е. первый раз за 3 мин. - второй(с перенесенным складом) за 20 секунд - и третий раз(снова по первому варианту) за 32 секунды. Тут у меня возник интерес к фразе fed-а об оптимизации запросов. Честно признаюсь, что я представляю, что такое оптимизация и статистика запросов, но лично с этим не дружил .
Сравнивать с рабочей базой думаю смысла нет. Там совершенно другие параметры SQL и AOS-а.Переносить склад в inventTrans пока не планируем (боимся)
Да, добавлю, что для тестирования использовал не очень "частый" склад.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 28.12.2011 в 21:12.
Старый 28.12.2011, 23:06   #50  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Pustik Посмотреть сообщение
я снова запустил оборотку старого образца. Увидел, что она стала выполняться за 32 секунды. Т.е. первый раз за 3 мин. - второй(с перенесенным складом) за 20 секунд - и третий раз(снова по первому варианту) за 32 секунды.
Это еще отчасти может об'ясняться тем, что после первого прогона оборотки СУБД закэшировала все необходимые данные и перестала начитывать их с диска.
За это сообщение автора поблагодарили: Pustik (1).
Старый 29.12.2011, 09:02   #51  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Для решения подобных задач в свое время использовал индексированные вьюхи. Способ несколько "варварский", зато не предполагает уродования штатного функционала, пусть и далеко не идеального
Старый 29.12.2011, 12:31   #52  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,892 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
К предположению gl00mie могу только добавить совет перед каждым прогоном теста, сбрасывать дисковый кэш сиквела с помощью комманды DBCC DROPCLEANBUFFERS
Кроме того, если считать что тесты 2 и 3 из сообщения участника pustik выполнялись в равноправных условиях (в смысле все данные уже были закэшированы), то разница в полотора раза - это нормально. Нет смысла копаться в планах запросов, скорее всего все и так хорошо...

Последний раз редактировалось fed; 29.12.2011 в 12:36.
Старый 29.12.2011, 16:31   #53  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Cool
Цитата:
Сообщение от Vadik Посмотреть сообщение
Дмитрий, есть предложение вернуться к решению задачи поставленной в начале ветки (напомню - ускорение оборотки по складу за счет добавления InventLocationId в InventTrans) на основе коммерчески доступных в данное время в данной галактике технологий (AX, X++, SQL Server \ Oracle). Если по существу добавить нечего - пожалуйста, воздержитесь от увода ветки в оффтопик
В соответствии с п.3.12 вынужден подчиниться......
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А вы учитываете, что дерево балансируется относительно значений хранящихся в таблице, а ваш "класический индекс" относительно их размера/местоположения? Т.е. вы допускаете, что величины в вашем биллионе записей могут быть распределены неравномерно?
Вынужден оставить без ответа... Не вижу здесь офтопика (даже берусь доказать обратное) но не смею спорить с модератором...
Старый 29.12.2011, 17:01   #54  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Как говорит mazzy - открывайте отдельную тему, там и расскажите
__________________
Axapta v.3.0 sp5 kr2
Старый 03.01.2012, 17:33   #55  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Не думаю, что у Майкрософт в планах делать такого рода денормализацию.
Было бы, наоборот, логичнее работать над более универсальным механизмом, который бы позволял с легкостью добавлять новые аналитики в зависимости от специфики учета в компании.

Поэтому, если конкретно в вашей компании есть проблемы, и де-нормализация помогает, вывод очевиден - сделайте это сами для себя...
Старый 04.01.2012, 08:47   #56  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Было бы, наоборот, логичнее работать над более универсальным механизмом, который бы позволял с легкостью добавлять новые аналитики в зависимости от специфики учета в компании.
Мне это очень нравиться. Как раз была необходимость в складской аналитике.
Как Вы считаете, это сильно трудоемко?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 04.01.2012, 12:31   #57  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Pustik Посмотреть сообщение
Мне это очень нравиться. Как раз была необходимость в складской аналитике.
Как Вы считаете, это сильно трудоемко?
Если вопрос ко мне, и о Майкрософт, то да, это было бы довольно трудоемко.
Но, для этого мы и существуем, чтобы делать трудоемкие задачи.
Вопрос только - в какой версии это будет сделано.
Старый 04.01.2012, 13:59   #58  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Если вопрос ко мне, и о Майкрософт, то да, это было бы довольно трудоемко.
Но, для этого мы и существуем, чтобы делать трудоемкие задачи.
Вопрос только - в какой версии это будет сделано.
пожалуй создам новую ветку
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 04.01.2012, 17:46   #59  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Дело в том что в отчете может так выглядит
Собеседники чуть выше поступили очень мудро, создав отдельные ветки
Пожалуйста, создавайте отдельные ветки для обсуждения отдельных тем
__________________
-ТСЯ или -ТЬСЯ ?
Старый 06.01.2012, 00:21   #60  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Обсуждение с запросом к InventSum выделено в отдельную ветку Запрос к InventSum с InventLocationId
__________________
Возможно сделать все. Вопрос времени
Теги
оптимизация, склад, складская аналитика, складские отчеты

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Развалились InventSum - InventTrans Logger DAX: Программирование 21 25.08.2017 11:41
DynamicsAxSCM: The InventTrans table. Explore various field usages. Blog bot DAX Blogs 0 09.11.2010 19:10
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Временная таблица + RLS leshy DAX: Программирование 6 27.04.2006 12:39
Связь таблиц InventTrans и PurchLine Pustik DAX: Программирование 2 25.11.2004 12:23

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

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

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