31.01.2006, 12:56 | #21 |
Участник
|
120к проводок в InventTrans это именно что игрушечная база.
Видимо разработчики системы считают что наличие обычно будет считаться на дату гораздо ближе к настоящему времени, чем к "началу времен". Сложение проводок лет за 5 на производственном предприятии, когда нужно наличие на неделю назад это очень неправильно. |
|
31.01.2006, 12:56 | #22 |
злыдень
|
Цитата:
Сообщение от UNRW
код я брал не из нашей рабочей базы... писал на память
2. Если сделать инвенттранс нормальным, построеным не по варчарам а поинтежеровским полям (вместо итемид - рекид и т.п.) - этот запрос будет работать на тех же 16 миллионах - 50 секунд пункт 2 - это так, к слову хотя может пригодится построителям хранилищ для отчетности, буде таковые вообще есть в природе на этом форуме
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
|
За это сообщение автора поблагодарили: dn (3). |
31.01.2006, 13:17 | #23 |
Участник
|
Цитата:
Сообщение от UNRW
обрабатывает до полумиллиона проводок...
представь что Косяпта у тебя стала работать с 01.01.2004 отработала уже 2 года... и отчет надо построить именно на 01.01.2004 вы чаще делаете отчет на неделю назад или на несколько лет назад? насколько чаще? |
|
31.01.2006, 13:19 | #24 |
Участник
|
Цитата:
Сообщение от Recoilme
1. но только в чем то, потому что на стандартных классах это вообще не работает
Что "это"? Цитата:
Сообщение от Recoilme
2. Если сделать инвенттранс нормальным, построеным не по варчарам а поинтежеровским полям (вместо итемид - рекид и т.п.) - этот запрос будет работать на тех же 16 миллионах - 50 секунд
Переход от естественных ключей к исскусственным. Такое вряд ли будет в ближайших версиях. |
|
31.01.2006, 13:20 | #25 |
Участник
|
Цитата:
Сообщение от mazzy
НЕТ! НЕТ! НЕТ!!! И еще раз НЕТ!!!
НИКОГДА так не делайте. Этот код работат боль-мень приемлимо только на игрушечных данных малого объема! Стоит вам только приблизиться к нормальному рабочему объему - ваша база умрет. Здесь написано как Аксапта получает остатки на произвольную дату http://axapta.mazzy.ru/lib/inventsumdate/ 30 тысяч артикулов. Рассчитать остаток для каждого артикула на начало мая 2005 года по 2 фиксированным складам (InventLocationId). Это около 2 миллионов складских проводок InventSumDatePhysicalDim:: onHandQty() - отработал примерно за 50 минут Прямой запрос в Query Analyzer по схеме: InventSum - SUM(InventTrans) выполнился за 2 минуты (т.е. остаток на сегодня минус все складские проводки до интересующей даты) Даже с учетом того, что при переносе запроса в синтаксис AXAPTA он слегка "притормозит", все равно ускорение получаю в разы Конечно, это несколько не то, что предложил UNRW. Я иду не "с начала времен", а от текущей даты назад. Но, по большому счету, на вывод это не влияет. Если речь идет о расчете остатка для нескольких артикулов, можно использовать классы семейства InventSumDate. Если же речь идет о массовом расчете остатков по большому количеству артикулов, то следует искать обходные пути. Классы для этого слишком медленные. |
|
31.01.2006, 13:21 | #26 |
Участник
|
Цитата:
Сообщение от _AnK_
120к проводок в InventTrans это именно что игрушечная база.
Видимо разработчики системы считают что наличие обычно будет считаться на дату гораздо ближе к настоящему времени, чем к "началу времен". Сложение проводок лет за 5 на производственном предприятии, когда нужно наличие на неделю назад это очень неправильно. |
|
31.01.2006, 13:26 | #27 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Вообще-то, даже чисто логически, вывод будет прямо противополжным. Одна групповая команда по всякому быстрее работает чем куча одиночных команд в цикле.
2. Вы забываете об аналитике. Аналитика у каждой номенклатуры - разная. Вообще говоря, мало кто хочет получить остатки на произвольную дату. Запрос UNRW является неправильным, поскольку не учитывает параметры в группе аналитики. Но я это дело пропустил, поскольку посчитал неважным. ОДНАКО: если вы говорите о групповой обработке, то расскажите как вы обработаете аналитике корректно в групповой обработке? Еще раз: уважаемые, подумайте. |
|
31.01.2006, 13:36 | #28 |
Участник
|
в запросе групируется по InventTrans.InventDimId и группируем в InventDim по нужным аналитикам - это же элементарно и очевидно
а то что запрос не правильный я сомневаюсь... мы пользуемся, работает быстро и быстрее стандартных, работает правильно и нас устраивает... кого не устраивает такой подход пусть используют стандарные отчеты |
|
31.01.2006, 13:39 | #29 |
Участник
|
Цитата:
Сообщение от UNRW
в запросе групируется по InventTrans.InventDimId и группируем в InventDim по нужным аналитикам - это же элементарно и очевидно
Подумайте, пожалуйста. |
|
31.01.2006, 13:46 | #30 |
----------------
|
to mazzy
1 TableScan по InventTrans будет работать быстрей чем туча мелких запросиков по каждой номенклатуре и по неиндексированым датам (DatePhysical) Конечно, эти 5 минут SQL сервер будет стоять в неудобной позе.. но недолго |
|
31.01.2006, 13:47 | #31 |
злыдень
|
Цитата:
Сообщение от mazzy
Не понял.
Что "это"? Это революция. Переход от естественных ключей к исскусственным. Такое вряд ли будет в ближайших версиях. InventSumDatePhysicalDim:: onHandQty() - отработал примерно за 50 минут Прямой запрос в Query Analyzer по схеме: InventSum - SUM(InventTrans) выполнился за 2 минуты (т.е. остаток на сегодня минус все складские проводки до интересующей даты) значит для 16 миллионов - примерно 8 часов. А ещё нужен приход и расход = примерно 24 часа на построение оборотки = не работает ЗЫ: я пробовал, через 1,5 часа снял задачу, у меня терпения не хватило 2. Скорее наооборот Переходе от искусственных ключей Аксапты построенным по текстовым полям к естественным ключам для СУБД построенным по целочисленным полям. Об этом надо было думать Дамгардам при проектировании базы. Сейчас это можно использовать при построении хранилищ на основе аксапты
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 31.01.2006 в 13:52. |
|
31.01.2006, 13:51 | #32 |
злыдень
|
Цитата:
Сообщение от Wamr
to mazzy
1 TableScan по InventTrans будет работать быстрей чем туча мелких запросиков по каждой номенклатуре и по неиндексированым датам (DatePhysical) Конечно, эти 5 минут SQL сервер будет стоять в неудобной позе.. но недолго
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
31.01.2006, 13:54 | #33 |
Участник
|
Цитата:
Сообщение от Recoilme
1. Ответил Владимир Максимов:
Ну, да ладно. Надеюсь другие разобрались Цитата:
Сообщение от Recoilme
2. Скорее наооборот Переходе от искусственных ключей Аксапты построенным по текстовым полям к естественным ключам для СУБД построенным по целочисленным полям.
Поищите. Найдете много интересного. Поищите на этом форуме для начала. Тема обсуждалась неоднократно. Цитата:
Сообщение от Recoilme
Об этом надо было думать Дамгардам при проектировании базы. Сейчас это можно использовать при построении хранилищ на основе аксапты
Просто тогда СУБД были другими. Тогда приортитеты были другими. ...Тогда - это уже 20 лет назад http://axapta.mazzy.ru/lib/names/#chronicle |
|
31.01.2006, 13:57 | #34 |
Участник
|
Цитата:
Сообщение от Recoilme
То ли я совсем не понял теорию как надо строить индексы, то ли её совсем не понял тот кто их туда пихал
Хинт 1. их туда пихал не один человек. Их туда много кто пихал. На протяжении очень длительного времени. В разных странах. Для разных СУБД. Хинт 2. аксапта позволяет включать/выключать функциональность. В частности: таблицы, ПОЛЯ, ИНДЕКСЫ. Какие именно таблицы, поля, индексы включены - зависит от закупленных лицензий. Правильная настройка индексов в конкретных условиях конкретного внедрения - дело внедренцев. ИМХО. |
|
31.01.2006, 14:05 | #35 |
Модератор
|
Цитата:
Сообщение от mazzy
Правильная настройка индексов в конкретных условиях конкретного внедрения - дело внедренцев. ИМХО.
__________________
-ТСЯ или -ТЬСЯ ? |
|
31.01.2006, 14:06 | #36 |
злыдень
|
Цитата:
Сообщение от mazzy
Хинты для понимания:
Хинт 1. их туда пихал не один человек. Их туда много кто пихал. На протяжении очень длительного времени. В разных странах. Для разных СУБД. Хинт 2. аксапта позволяет включать/выключать функциональность. В частности: таблицы, ПОЛЯ, ИНДЕКСЫ. Какие именно таблицы, поля, индексы включены - зависит от закупленных лицензий. Правильная настройка индексов в конкретных условиях конкретного внедрения - дело внедренцев. ИМХО.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
31.01.2006, 14:11 | #37 |
Участник
|
Цитата:
Сообщение от Vadik
И все же хотелось бы пореже убирать косяки за вендором
|
|
31.01.2006, 14:15 | #38 |
Участник
|
Цитата:
Сообщение от Recoilme
Не планируется ли написание Вашей командой написание статьи на эту тему? Думаю это было бы чрезвычайно интересно большинству участников..
И чем эта будущая статья будет отличаться от того, что Vadik уже написал? http://axapta.mazzy.ru/lib/querytuning/ |
|
31.01.2006, 14:16 | #39 |
NavAx
|
Цитата:
Сообщение от Recoilme
приводящие к увеличению призводительности приложения в целом, а не конкретных запросов?
__________________
Isn't it nice when things just work? |
|
31.01.2006, 14:26 | #40 |
злыдень
|
Цитата:
Сообщение от macklakov
Наверное ты хотел спросить, какие конкретные запросы сильнее всего влияют на быстродействие типовых задач?
"Какие надо добавить конкретные индексы для оптимизации конкретных запросов " Пример: распространенная задача - считывание текущего остатка, какой индекс на инвентсам/инвентдим позволит максимально оптимизировать эти запросы для MS SQL? М.б. это должен быть кластерный индекс? Насколько затормозится вставка? Т.е. для таких задач наверно надо делать комплексное исследование, не как оптимизировать конкретный запрос, а как это повлияет на процесс в целом ? Поэтому я и побаиваюсь туда лезть
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
Теги |
остатки, ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Остатки на дату InventSumDatePhysical | 6 | |||
Остатки товара на определенную дату | 7 | |||
Скачут остатки | 3 | |||
Цена на дату создания заказа/закупки | 2 | |||
Остатки | 6 |
|