29.10.2004, 14:46 | #1 |
Участник
|
Обработка заказов и производительность
Аксапта 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 |
----------------
|
Разбить заказы на кусочки поменьше (100 строк)
|
|
29.10.2004, 15:10 | #3 |
Участник
|
Так пробовала , - в этом случае импортируется дольше, а разносится почти также
|
|
29.10.2004, 16:45 | #4 |
Участник
|
Re: Обработка заказов и производительность
Цитата:
Изначально опубликовано Swetik
Подскажите , пожалуйста, как лучше реализовать разноску , чтобы было побыстрее ? 1. выключить авторезервирование. выключить проверку кредитного лимита. выключить автосопоставление, расчет процентов и писем напоминаний в профилях разноски. отключить расчет комиссионных, если есть. в управлении печатью обнулить количество печатаемых оригиналов и копий. 2. есть ГТД, то построить индексы. вообще отмониторить длинные запросы разбить на файловые группы. разобраться с кэшированием таблиц и таки закэшировать то, что нужно 3. проверить, не блокирует ли кто-нибудь используемые таблицы во время разноски. Если да, то выполнять разноску в пакетном задании ночью, когда никого нет. 4. Выключить конфигурационными ключами все, что не используется. Обязательно выключить сводное планирование, если оно не используется (InventSumTTS) отключить корреспонденцию нафиг, если это возможно |
|
29.10.2004, 16:48 | #5 |
Участник
|
А.... и еще одно.
Разноску выполнять не собственноручно написанной функцией, а стандартной процедурой: Расчеты с клиентами \ Периодические операции \ Обработка заказов \ Накладная Желательно в пакете ночью. |
|
29.10.2004, 16:51 | #6 |
Участник
|
И. еще... если используются спецификации - то остановить развертывание, если возможно.
И вообще, поработать над настройкой спецификаций, если они используются. Убрать варианты, альтернативы, условные маршруты, группы выбора и т.п. Если это возможно для вашего бизнеса, конечно. |
|
01.11.2004, 06:48 | #7 |
Участник
|
Спасибо , Mazzy, за рекомендации
1п. Было все выключено - кроме обнуления количества оригиналов 3п. таблицы никто не блокирует 4п. К сожалению сводное планирование и корреспонденция используются... 5п. Функция написана собственноручно, чтобы запускать, опять же в пакетном режиме , но вместе импорт+разноска (хотелось меньше кнопок нажимать). Запустила обработку периодической операцией - также обработка 35 мин 6п. Спецификации не используются 2п. "разобраться с кэшированием таблиц и таки закэшировать то, что нужно" - можно опять глупый вопрос, как определить , что точно нужно кэшировать , а что не стоит ? |
|
02.11.2004, 06:45 | #8 |
Участник
|
ну а может это нормальная скорость? у кого были более высокие результаты на подобной конфигурации?
|
|
02.11.2004, 09:49 | #9 |
Роман Долгополов (RDOL)
|
Цитата:
Изначально опубликовано AlexNSK
ну а может это нормальная скорость? у кого были более высокие результаты на подобной конфигурации? У меня была ситуация с необходимостью создавать и разносить ~300 000 строк заказов за максимум 3 часа. Пришлось написать собственный разносчик z-отчетов, который выполнял создание и разноску заказа со скоростью 2000 строк в минуту. Вместе с разноской формировались накладная и фактура, проводки в ГК с корреспонденцией счетов, считались налоги и т.д. - с точки зрения результатов оба алгоритма идентичны. Никакие извращения типа вызовов хранимых процедур не использовались - только чистый X++. Так что с точки зрения скорости есть куда стремиться. Недостаток (и достаточно серьезный) этого способа в том, что по мере развития приложения приходится поддерживать два разных алгоритма обработки заказа. Код выложить или подарить не могу - он принадлежит не мне, а заказчику. |
|
02.11.2004, 10:18 | #10 |
Участник
|
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 |
Участник
|
icq: 64708869
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
03.11.2004, 06:30 | #12 |
Участник
|
Спасибо за рекомендации , посмотрю.
Для db , что же такое z- отчеты ? |
|
03.11.2004, 10:49 | #13 |
Участник
|
привет. не могу достучаться до тебя в аське. добавь меня 231-395-955
|
|
03.11.2004, 14:55 | #14 |
Роман Долгополов (RDOL)
|
Цитата:
Изначально опубликовано Swetik
Для db , что же такое z- отчеты ? я так понял, что все таки это шутка, но на всякий случай z-отчет - отчет, снимаемый с кассового аппарата (обычно при закрытии/передаче смены) в котором, в том числе, перечислены продажи-возвраты выполненные этим аппаратом со времени снятия предыдущего z-отчета. При автоматизации с использованием аксапты обычно тем иди иным способом превращаются в заказы Подойдите к людям, которые обслуживают кассовые аппараты в автоматизируемой конторе. Они вам много чего интересного расскажут |
|
03.11.2004, 15:24 | #15 |
Moderator
|
Цитата:
У меня была ситуация с необходимостью создавать и разносить ~300 000 строк заказов за максимум 3 часа. Пришлось написать собственный разносчик z-отчетов, который выполнял создание и разноску заказа со скоростью 2000 строк в минуту.
|
|