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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.11.2006, 14:13   #1  
pdojn is offline
pdojn
Участник
 
50 / 12 (1) ++
Регистрация: 24.06.2004
Адрес: Москва
Оптимизацизя запроса в findSum или ...?
При изменении количества в журнале переноса с меньшего на большее (при отрицательном количестве) система зависает на некоторое время.
При отладке длинных запросов выяснилось, что "тупит" запрос метода findSum таблицы InventSum:

select forcePlaceholders forceSelectOrder forceNestedLoop #inventSumFields from inventSum
index hint ClosedItemDimIdx
where inventSum.itemId == _itemId &&
inventSum.closed == NoYes::No
#inventDimjoin(inventSum.InventDimId,inventDim,_InventDimCriteria,_InventDimParm,dimIdIdx);

В чем может быть проблема?
Старый 23.11.2006, 15:07   #2  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Думаю, что тут зря навязывается индекс. SQL-оптимизатор должен отработать лучше, если конечно статистика по индексам обновляется периодически.
Старый 23.11.2006, 15:54   #3  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Добавьте в индекс ClosedItemDimIdx InventDim. Это ускорит выборку
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 23.11.2006, 16:20   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от pdojn Посмотреть сообщение
В чем может быть проблема?
проблема может быть в том, что некоторые личности считают себя умнее оптимизатора, в разработку которого вбухиваются миллионы у.е.
Цитата:
index hint ClosedItemDimIdx
и
Цитата:
#inventDimjoin(inventSum.InventDimId,inventDim,_InventDimCriteria,_InventDimParm,dimIdIdx)
яркое тому свидетельство

количество записей в INVENTDIM озвучьте, пожалуйста
__________________
-ТСЯ или -ТЬСЯ ?
Старый 23.11.2006, 16:23   #5  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Vadik Посмотреть сообщение
проблема может быть в том, что некоторые личности считают себя умнее оптимизатора, в разработку которого вбухиваются миллионы у.е.

и

яркое тому свидетельство

количество записей в INVENTDIM озвучьте, пожалуйста
А это на системном слое в методе findsum прописано
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 23.11.2006, 16:29   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
А это на системном слое в методе findsum прописано
этих-то личностей, пишущих на SYS слое, я и имею в виду
__________________
-ТСЯ или -ТЬСЯ ?
Старый 24.11.2006, 07:05   #7  
pdojn is offline
pdojn
Участник
 
50 / 12 (1) ++
Регистрация: 24.06.2004
Адрес: Москва
Ребята, стандартный функционал используется по максимуму и никаких изменений в коде InventSum не проводилось.
Количество записей 5200065.
А добавление InventDimId в индекс существенного увеличения результата не дает.
Старый 24.11.2006, 07:13   #8  
Sirius is offline
Sirius
Участник
 
151 / 10 (1) +
Регистрация: 10.01.2004
Адрес: Новосибирск
вы план выполнения запроса посмотрите.. лучше даже в Query Analyzer'е.. А потом уберите все хинты (не только по индексу, но и включая forceSelectOrder и forceNestedLoop, а может и forcePlaceholders)
и еще раз план выполнения посмотрите - сравните и сделайте вывод.. потом уже можно будет думать о там как переделывать индекс (если придется)
Старый 24.11.2006, 08:35   #9  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от pdojn Посмотреть сообщение
Ребята, стандартный функционал используется по максимуму и никаких изменений в коде InventSum не проводилось.
Количество записей 5200065.
А добавление InventDimId в индекс существенного увеличения результата не дает.
После добавления необходимо синхронизировать таблицу и пересобрать статистику на SQL сервере.
Или, как советуют остальные, уберите модификаторы и указание index hint в методе
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 24.11.2006, 09:08   #10  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
а в длинных запросах используется ГТД?
и более общий вопрос - при каких параметрах он тупит?
Старый 24.11.2006, 09:19   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Sirius Посмотреть сообщение
вы план выполнения запроса посмотрите.. лучше даже в Query Analyzer'е.. А потом уберите все хинты (не только по индексу, но и включая forceSelectOrder и forceNestedLoop, а может и forcePlaceholders)
и еще раз план выполнения посмотрите - сравните и сделайте вывод.. потом уже можно будет думать о там как переделывать индекс (если придется)
Наверно лучше не спешить убирать хинт forcePlaceholders
Он может улучшить план конкретного запроса исполняемого в ненагруженной системе, но ухудшить использование кеша в SQL server - так что в реальной работе производительность работы сервера базы данных может упасть.
Старый 24.11.2006, 09:33   #12  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Я думаю, что при 5 миллионах записях в InventDim просто оптимизация уже вряд-ли поможет, тут техника должна быть соответствующей (представляю, сколько же записей в InventSum).
Закрывается ли склад? Сколько записей в InventSum закрыто, сколько открыто? Подвисания происходят в рабочем режиме или на базе без другой активности тоже? Что показывает план запроса?
Старый 24.11.2006, 09:41   #13  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Я думаю, что при 5 миллионах записях в InventDim просто оптимизация уже вряд-ли поможет, тут техника должна быть соответствующей (представляю, сколько же записей в InventSum).
Закрывается ли склад? Сколько записей в InventSum закрыто, сколько открыто? Подвисания происходят в рабочем режиме или на базе без другой активности тоже? Что показывает план запроса?
Точно. В точку.

Может быть имеет смысл проанализировать по каким полям идет фильтрация и под них создать специально обученные индексы ...

А совсем в тяжелом случае может и денормализация потребуется - вытащить некоторые из аналитик непосредственно в InventSum

P.S.
А для начала конечно же хинты убить :-)

Последний раз редактировалось Logger; 24.11.2006 в 09:44.
Старый 24.11.2006, 09:52   #14  
pdojn is offline
pdojn
Участник
 
50 / 12 (1) ++
Регистрация: 24.06.2004
Адрес: Москва
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
После добавления необходимо синхронизировать таблицу и пересобрать статистику на SQL сервере.
Или, как советуют остальные, уберите модификаторы и указание index hint в методе
Конечно же пересобиралась.

Цитата:
Сообщение от Wamr Посмотреть сообщение
а в длинных запросах используется ГТД?
и более общий вопрос - при каких параметрах он тупит?
ГДТ не используется.
При выборке по InventDim накладывается условие только на InventLocationId.

Для всех вышеуказанных советов был поставлен эксперимент и как результат:
1. В любом из случаев приминялся ClosedItemDimIdx
2. Время выполнения каждой выборки было пропорционально количеству строк в InventSum не зависимо от эксперимента.
3. Существенного увеличения производительности добится не удается. Ведь необходимо уменьшить Время выполнения с 40000 млс хотя бы до 1000.

Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Я думаю, что при 5 миллионах записях в InventDim просто оптимизация уже вряд-ли поможет, тут техника должна быть соответствующей (представляю, сколько же записей в InventSum).
Закрывается ли склад? Сколько записей в InventSum закрыто, сколько открыто? Подвисания происходят в рабочем режиме или на базе без другой активности тоже? Что показывает план запроса?
5млн в InventSum. В InventDim 1млн. Склад закрывается с задержкой на 3 месяца. Закрытых записей в InventSum 590000. Подвисание в обычном режиме. План исполнения показывает, что применяются указанные в запросе индексы или они же, если убрать хинты.

Последний раз редактировалось pdojn; 24.11.2006 в 10:56. Причина: Недописал
Старый 24.11.2006, 10:58   #15  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от pdojn Посмотреть сообщение
При выборке по InventDim накладывается условие только на InventLocationId.
Тогда проблема в большом объеме выбираемых данных.
Сколько выполняется тот же запрос в QA?
Сравните планы.
Может попадаете на блокировки?
Посмотрите загрузку железа.

Что еще можно посмотреть.
Сколько записей в InventSum
сколько из них с Closed = 1
сколько из них с ClosedQty = 1
Теги
hint, sql, оптимизация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Изменить план выполнения запроса Sequel DAX: Администрирование 2 29.05.2008 15:46
Быстродействие запроса Antonuch DAX: Программирование 1 25.01.2008 15:58
Оптимизация запроса oleg_e DAX: Программирование 16 11.01.2008 10:22
Разбор findSum Wamr DAX: Программирование 1 08.12.2006 19:42
Ускорение выполнения запроса Oracle + MS Axapta Горбунов Дмитрий DAX: Программирование 17 15.11.2005 18:13

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

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

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