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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2006, 17:29   #1  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Oleksandr Посмотреть сообщение
while selec a join b join c //возвращает под сотню тысяч записей.
{
while (bla bla ) // несколько повторов на одну запись
{
someoperation();
recordinsertlist.ins();
}
recordinsertlist.insertdatabse();
}
Почему у Вас recordinsertlist.insertdatabse(); внутри while select?

Цитата:
Сообщение от Oleksandr Посмотреть сообщение
времени занимает до 80-ти часов,
Цитата:
Сообщение от Oleksandr Посмотреть сообщение
Последний раз было 1.1М записей...
3 строки в секунду? Что-то очень медленно, через COM с такой скоростью грузится. Что именно там происходит?
__________________
Isn't it nice when things just work?
Старый 27.12.2006, 17:42   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
while selec a join b join c
У вас используются все поля из 3х таблиц? Если нет, то лучше их указать в запросе
За это сообщение автора поблагодарили: Oleksandr (1).
Старый 27.12.2006, 17:48   #3  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от Wamr Посмотреть сообщение
while selec a join b join c
У вас используются все поля из 3х таблиц? Если нет, то лучше их указать в запросе
Многие. Но в принципе может быть поиожет, таблички нелегкие, почему-то сразу не подумал об этом.
__________________
--
regards, Oleksandr
Старый 28.12.2006, 13:06   #4  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от Oleksandr Посмотреть сообщение
Многие. Но в принципе может быть поиожет, таблички нелегкие, почему-то сразу не подумал об этом.
Помогло, практически в два раза уменшилось время, не подумал бы. Таблицы тяжелые. Сейчас еще в 3-тайере попробую
__________________
--
regards, Oleksandr
Старый 27.12.2006, 17:50   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
а что с памятью творится? prognosisLineList на миллион записей не начинает на диск кэшироваться?
__________________
Isn't it nice when things just work?
Старый 27.12.2006, 18:19   #6  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от macklakov Посмотреть сообщение
а что с памятью творится? prognosisLineList на миллион записей не начинает на диск кэшироваться?
Не знаю, на серваке не смотрел локально сиквел жрал дето 500 МБ и все, это правда неполная загрузка, в принципе из-за своппинга тоже может тормозить.

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

Ладно, всем спасибо за советы, попробую поэксперементировать еще, сообщу
__________________
--
regards, Oleksandr
Старый 27.12.2006, 18:16   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Систем монитор, кстати, говорит что количество селектов соотв. количеству записей...
а у вас там в join временная табличка не попала случайно
Старый 27.12.2006, 19:15   #8  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от Wamr Посмотреть сообщение
а у вас там в join временная табличка не попала случайно
Нее, все постоянные
__________________
--
regards, Oleksandr
Старый 28.12.2006, 07:20   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Еще можно попробовать вставлять не целиком, а порциями по 500-1000 строк - иногда длинные транзакции тормозят
Старый 28.12.2006, 11:40   #10  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от belugin Посмотреть сообщение
Еще можно попробовать вставлять не целиком, а порциями по 500-1000 строк - иногда длинные транзакции тормозят
Да, это вариант. И предположително от большого объема рекординсертлист в памяти может быть своппинг.
__________________
--
regards, Oleksandr
Старый 04.01.2007, 23:04   #11  
Torin is offline
Torin
Участник
 
127 / 32 (2) +++
Регистрация: 10.03.2003
Адрес: Odessa, Ukraine
А мне кажеться, что можно попробовать убрать лишние джойны. И hash и lookup по своему хороши, но все равно на таких длинных выборках не сравнятся с заточенными одиночными запросами. Попробуйте, условную табличку "факта" убрать из джойна и сделать плейсхолдер селект в тот момент, когда нужны данные в процедуре обработки. Под этот селект хорошо заточенный индекс.
Старый 06.01.2007, 23:27   #12  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от Torin Посмотреть сообщение
А мне кажеться, что можно попробовать убрать лишние джойны. И hash и lookup по своему хороши, но все равно на таких длинных выборках не сравнятся с заточенными одиночными запросами. Попробуйте, условную табличку "факта" убрать из джойна и сделать плейсхолдер селект в тот момент, когда нужны данные в процедуре обработки. Под этот селект хорошо заточенный индекс.
Проблема не в селекте, уже выяснил. Он исполняется буквадьно пару минут. Основная нагрузка - потом на сиквел вервере, при обработке.
__________________
--
regards, Oleksandr
Старый 07.01.2007, 02:02   #13  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
А что там у вас внутри тогда такое?

Чтение из базы или запись? Или просто математика?

Индексы оптимально подобраны? Запросы оптимизированы? Обращений к базе много за один вызов writePrognosisLines() происходит? Запросы с джоинами или простые? Если с джоинами, то forceplaceholders стоит? Сортировка или группировка есть?

Попробуйте искусственно добавить условие в запрос с основным циклом, чтобы он отработал, например, 3 раза. И посмотрите профайлером, куда уходит время внутри writePrognosisLines().
__________________
С уважением,
glibs®
Старый 06.01.2007, 23:30   #14  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от otkudao Посмотреть сообщение
елки-палки! так вы в 2-х звенке пытаетесь разогнаться? так быстро не будет работать никогда!

Выносите ВСЕ операции с БД
- в трехзвенку,
- на серверную часть,
- в методы с префиксом server (чтобы выполнялись исключительно на сервере.) Если класс (вот не помню, джоб, кажется, только клиентски по исполнению может быть, тогда перенесите методы в класс...) не позволяет своим методам выполняться на сервере, выносите эти методы в static (+ server).

Ускорение (был опыт с отчетами) может достигать десятков раз!
Весь функционал - в одном классе - наследнике RunBaseBatch. Запускается периодически на батч-сервере (только в 2-звенке можно, насколько помню ?).

С отчетами - да, они частично на клиенте исполняются вроде.
__________________
--
regards, Oleksandr
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mazzy: Сравнительное тестирование производительности Microsoft Axapta v.3.0. CУБД Microsoft SQL Server 2005 и Microsoft SQL Server 2000 Blog bot DAX Blogs 0 28.10.2006 17:22
Fred Shen: Convert Axapta date type value to datetime type value in SQL Server Blog bot DAX Blogs 0 28.10.2006 16:40
Доступ к VIEW SQL SERVER из Axapta 111andrei DAX: Программирование 13 02.12.2005 11:19
AX-05-020 Axapta Database MS-SQL MadLight DAX: Администрирование 9 12.01.2005 14:52
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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