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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.10.2004, 14:46   #1  
Swetik is offline
Swetik
Участник
 
221 / 10 (1) +
Регистрация: 31.07.2002
Обработка заказов и производительность
Аксапта 3.0 сп 3
Задачи
1. Необходимо импортировать 10000 тыс строк заказа (Клиент один и тот.же - розница)
2. Все это дело как можно быстрее разнести.

Импорт проходит довольно быстро - 4-4,5 мин, но вот обработка накладных ....35 -40 минут
server static void postSales()
{
SalesFormLetter salesFormLetter;
salesTable salesTable;

ttsBegin;

while select salesTable
where salesTable.DocumentStatus < DocumentStatus::Invoice
{
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
salesFormLetter.transDate(salesTable.DeliveryDate);
salesFormLetter.update(salesTable);
}
ttsCommit;
}
Проц. 2.4 Г
Память 512М

Подскажите , пожалуйста, как лучше реализовать разноску , чтобы было побыстрее ?
Старый 29.10.2004, 14:53   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Разбить заказы на кусочки поменьше (100 строк)
Старый 29.10.2004, 15:10   #3  
Swetik is offline
Swetik
Участник
 
221 / 10 (1) +
Регистрация: 31.07.2002
Так пробовала , - в этом случае импортируется дольше, а разносится почти также
Старый 29.10.2004, 16:45   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Обработка заказов и производительность
Цитата:
Изначально опубликовано Swetik
Подскажите , пожалуйста, как лучше реализовать разноску , чтобы было побыстрее ?
Глупые и радикальные советы можно?

1.
выключить авторезервирование.
выключить проверку кредитного лимита.
выключить автосопоставление, расчет процентов и писем напоминаний в профилях разноски.
отключить расчет комиссионных, если есть.
в управлении печатью обнулить количество печатаемых оригиналов и копий.

2.
есть ГТД, то построить индексы.
вообще отмониторить длинные запросы
разбить на файловые группы.
разобраться с кэшированием таблиц и таки закэшировать то, что нужно

3.
проверить, не блокирует ли кто-нибудь используемые таблицы во время разноски. Если да, то выполнять разноску в пакетном задании ночью, когда никого нет.

4.
Выключить конфигурационными ключами все, что не используется.
Обязательно выключить сводное планирование, если оно не используется (InventSumTTS)
отключить корреспонденцию нафиг, если это возможно
Старый 29.10.2004, 16:48   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
А.... и еще одно.

Разноску выполнять не собственноручно написанной функцией, а стандартной процедурой:
Расчеты с клиентами \ Периодические операции \ Обработка заказов \ Накладная

Желательно в пакете ночью.
Старый 29.10.2004, 16:51   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
И. еще... если используются спецификации - то остановить развертывание, если возможно.
И вообще, поработать над настройкой спецификаций, если они используются.
Убрать варианты, альтернативы, условные маршруты, группы выбора и т.п. Если это возможно для вашего бизнеса, конечно.
Старый 01.11.2004, 06:48   #7  
Swetik is offline
Swetik
Участник
 
221 / 10 (1) +
Регистрация: 31.07.2002
Спасибо , Mazzy, за рекомендации

1п. Было все выключено - кроме обнуления количества оригиналов

3п. таблицы никто не блокирует

4п. К сожалению сводное планирование и корреспонденция используются...

5п. Функция написана собственноручно, чтобы запускать, опять же в пакетном режиме , но вместе импорт+разноска (хотелось меньше кнопок нажимать). Запустила обработку периодической операцией - также обработка 35 мин

6п. Спецификации не используются

2п. "разобраться с кэшированием таблиц и таки закэшировать то, что нужно" - можно опять глупый вопрос, как определить , что точно нужно кэшировать , а что не стоит ?
Старый 02.11.2004, 06:45   #8  
AlexNSK is offline
AlexNSK
Участник
 
29 / 10 (1) +
Регистрация: 16.05.2003
ну а может это нормальная скорость? у кого были более высокие результаты на подобной конфигурации?
Старый 02.11.2004, 09:49   #9  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Изначально опубликовано AlexNSK
ну а может это нормальная скорость? у кого были более высокие результаты на подобной конфигурации?
Скорость действительно нормальная. И самое главное - посчитайте нужно ли Вам быстрее. Посчитайте, сколько времени нужно на разноску всех этих заказов + сколько времени нужно на операции после разноски (сводное планирование и пр. тяжеловесные операции, зависящие от актуальных остатков). Если времени ночью достаточно, то лучше принять ситуацию как есть. Существенного уменьшения времени разноски на стандартном функционале только с помощью настроек вы не получите. Если же времени в сутках не хватает, а параллельно ваши операции работать отказываются или начинают жутко тормозить, то придется кодировать

У меня была ситуация с необходимостью создавать и разносить ~300 000 строк заказов за максимум 3 часа. Пришлось написать собственный разносчик z-отчетов, который выполнял создание и разноску заказа со скоростью 2000 строк в минуту. Вместе с разноской формировались накладная и фактура, проводки в ГК с корреспонденцией счетов, считались налоги и т.д. - с точки зрения результатов оба алгоритма идентичны. Никакие извращения типа вызовов хранимых процедур не использовались - только чистый X++.

Так что с точки зрения скорости есть куда стремиться. Недостаток (и достаточно серьезный) этого способа в том, что по мере развития приложения приходится поддерживать два разных алгоритма обработки заказа.

Код выложить или подарить не могу - он принадлежит не мне, а заказчику.
Старый 02.11.2004, 10:18   #10  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
1) To-db: что есть "z-отчеты"?
2) Такое рассуждение:
2.1) 10.000 строк ~ 30 мин = 20.000 строк/час - это есть V1
2.2) Значит для "обработки" 300.000 строк: "обработается" за 300.000/20.000 = 15 часов.
2.3) db же получил 300.000 за 3 часа. Таким образом он получил увеличение скорости в 5 раз. Ну что ж сказать - для Axapta это реально.

3) Собствено рекомендации:
- оптимизировать запрос.
3.1) Как бы не кривить душой , но использовать в вашем запросе индексы и увеличить количество условий в "where"
while select salesTable
where salesTable.DocumentStatus < DocumentStatus::Invoice
idx ...
{
3.2) Для начала хотя бы посмотреть выполнение и план запроса с помощью:
сервис\параметры\sql\ мониторинг запросов + и длниые запросы смотреть.
3.3) sql профайлером тоже можно.
3.4) Не получится ли здесь использовать forceLiteral forcePlaceHolder.....
ну и т.д. ... и т.д....
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5
Старый 02.11.2004, 10:36   #11  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
icq: 64708869
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5
Старый 03.11.2004, 06:30   #12  
Swetik is offline
Swetik
Участник
 
221 / 10 (1) +
Регистрация: 31.07.2002
Спасибо за рекомендации , посмотрю.

Для db , что же такое z- отчеты ?
Старый 03.11.2004, 10:49   #13  
AlexNSK is offline
AlexNSK
Участник
 
29 / 10 (1) +
Регистрация: 16.05.2003
привет. не могу достучаться до тебя в аське. добавь меня 231-395-955
Старый 03.11.2004, 14:55   #14  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Изначально опубликовано Swetik


Для db , что же такое z- отчеты ?
ну ... так Вы розницу автоматизируете или где?
я так понял, что все таки это шутка, но на всякий случай

z-отчет - отчет, снимаемый с кассового аппарата (обычно при закрытии/передаче смены) в котором, в том числе, перечислены продажи-возвраты выполненные этим аппаратом со времени снятия предыдущего z-отчета. При автоматизации с использованием аксапты обычно тем иди иным способом превращаются в заказы

Подойдите к людям, которые обслуживают кассовые аппараты в автоматизируемой конторе. Они вам много чего интересного расскажут
Старый 03.11.2004, 15:24   #15  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
У меня была ситуация с необходимостью создавать и разносить ~300 000 строк заказов за максимум 3 часа. Пришлось написать собственный разносчик z-отчетов, который выполнял создание и разноску заказа со скоростью 2000 строк в минуту.
Некий аналог системы множественных складских транзакций ? Если не секрет, конечно.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Объединение заказов monter DAX: Функционал 1 19.09.2008 10:32
Планирование производства - группировка заказов в партии OliaM DAX: Функционал 8 02.06.2005 12:40
Суммарная обработка накладной AlexUnik DAX: Функционал 1 19.08.2004 15:51
"Закупка на основе заказов" или "сводное планирование" Hamster DAX: Функционал 2 17.02.2004 01:47
Заказов -> Строки заказов -> Запросы -> Пункт "Производство" Андре DAX: Программирование 1 20.09.2002 10:43

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

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

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