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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.04.2022, 10:20   #1  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
Индексы таблиц (DAX2012)
Добрый день!

Уже некоторое время происходит непонятное с таблицами InventTrans и PriceDiscTable.
Запросы, в которых присутствует "order by Date" начинают безбожно висеть. Спасает только реиндексация таблицы.

С чем может быть связана такая проблема?
З.ы. периодически при запуске реиндексации вылезает ошибка, что Система не может создать индекс потому что он уже существует
Старый 29.04.2022, 15:31   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от DesparioN Посмотреть сообщение
Запросы, в которых присутствует "order by Date" начинают безбожно висеть. Спасает только реиндексация таблицы.
Скорее всего оптимизатор выбирает неправильный индекс.
Предположу что в запросе фильтр по одним полям, а сортировка по другим и его клинит. Если фильтрация попадает на нужный индекс, и вы знаете что он правильный то можно в запросе в начале добавить сортировку по его полям. Из-за фильтрации это не изменит результирующую выборку но поможет оптимизатору запросов не ошибаться.

Но в начале нужно понять какой же индекс (какой план запроса) оптимизатор выбирает при тормозах. а дальше уже можно понимать из-за чего так и что поправить.
Старый 29.04.2022, 21:59   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,699 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
А вместо переиндексации обновление статистики делать не пробовали?

Т.е. запускаете запрос с Order By и в момент его выполнения (это важно) запускаете обновление статистики. Следующий запрос с Order By должен выполниться быстрее
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 02.05.2022, 12:48   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от DesparioN Посмотреть сообщение
Спасает только реиндексация таблицы.
Скорее всего это сниффинг параметров. Переиндексация или сбор статистики вряд ли помогут решить проблему.
Возможные пути решения и мониторинга таких ситуаций можно почитать вот здесь:

Resolving performance issues caused by parameters sniffing in AX2012 and D365FO
Monitoring the most problematic performance problem in Dynamics AX - parameters sniffing
Старый 12.05.2022, 21:11   #5  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
В общем по результатам различных манипуляций удалось обнаружить следующее:
сам по себе ORDER BY работает без тормозов, даже по дате. Если в SELECT добавить EXIST JOIN INVENTDIM (без ORDER BY), также все норм. Но если их объединить в одном SELECT, то возникают лаги, если начать фильтровать INVENTDIM пустыми значениями, например WHERE INVENTDIM.INVENTCOLORID == ''.

Как только в SELECT был добавлен #InventDimExistsJoin, проблема ушла.
Старый 13.05.2022, 10:10   #6  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Стоит обратить внимание на объем таблицы InventDim и почистить с помощью класса InventUnusedDimCleanUp:

Inventory management > Periodic > Clean up > Inventory dimensions cleanup
__________________
// no comments
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Идентификация иерархических таблиц в методах таблиц-родителей Владимир Максимов DAX: Программирование 0 18.09.2020 16:18
AX 2012 Наследование таблиц. Краткое описание механизма sukhanchik DAX: Программирование 32 21.09.2018 17:56
Стандартные неиспользуемые индексы Link DAX: Программирование 14 06.02.2014 14:48
Всегда ли правильно работает queryrun().query().dataSourceCount() при присоединении пользователем таблиц в настройках стандартного запроса? Aquarius DAX: Программирование 5 26.09.2013 09:52
Владельцы таблиц в БД аксапты AxaptaUser DAX: Администрирование 11 23.05.2007 18:33

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

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

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