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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.06.2005, 18:31   #1  
vey is offline
vey
Участник
 
60 / 12 (1) ++
Регистрация: 15.03.2005
Адрес: Киев
Хранимые процедуры и производительность
Здравствуйте!
Функция «Развертывание» в сводном плане выполняется порядка 28 минут для большого изделия (несколько тысяч составляющих, более 10 уровней вложенности спецификации). Время неприемлемое, разумеется. В алгоритме класса, осуществляющего развертывание (ReqTransExplode) коренных улучшений добиться не удалось; были выбраны требуемые поля в запросах вместо записи целиком, поэкспериментировали с индексами. Основная проблема в том, что суть алгоритма – рекурсивный спуск (или подъем при развертывании вверх) по дереву. А рекурсия никогда особой шустростью не отличалась... В результате для сложного изделия имеем много погружений в рекурсию и множество мелких запросов к БД (таблицы ReqTrans, ReqCalc). Как один из вариантов улучшения ситуации был рассмотрен перенос алгоритма развертывания на SQL-server (написание Stored Procedure). Однако в таком случае алоритм отрабатывает еще медленнее, 4 минуты против 12 секунд в стандартном варианте. С чем это может быть связано? Алгоритм перенесен практически 1:1. Единственное отличие – погружение по дереву реализовано не вширину, а вглубину (соответственно чаще вызывает сама себя ф-ция). Имеются сильные подозрения, что именно в этом дело.:-( Но только ли в этом? Был у кого-нибудь опыт переведения части кода в хранимые процедуры? Насколько хорошо MS SQL server 2000 справляется с рекурсией? Может, возможно повысить скорость отработки хранимой процедуры использованием каких-то ключевых слов, инструкций, параметров и т.д.? Ни за что не стали бы так возиться с развертыванием, однако данный класс используется в очень критичном для клиента алгоритме.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Прямое обращение к СУБД, минуя Axapta murad DAX: Программирование 34 12.03.2007 18:26
Производительность БД при смене Recovery Model polygris DAX: Администрирование 7 19.01.2007 18:43
Прошу разъяснить, какие процедуры и методы проходит система при открытии, закрытии. Кандидат DAX: Программирование 9 02.11.2005 14:34
SQL Profiler не показывает процедуры!SOS! naomy DAX: Программирование 13 28.09.2005 14:33
Вызов хранимой процедуры Diman DAX: Программирование 6 17.09.2003 10:24

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:57.