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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2018, 22:50   #1  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
How Check Constraints MIGHT Improve Your Queries and Missing Index Requests
Интересный пост, не совсем про Аксапту, но возможно кому-то пригодится

Цитата:
Say you’ve got an app that’s designed to store multiple companies in a single database – but you don’t actually use it that way. All of the data in a given database is actually for the same company
..
All of our app’s queries have CompanyCode in their WHERE clauses – even though that doesn’t really do any filtering, but the app is a 3rd party app that always filters for just the company you’re logged into
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: fed (2), belugin (10), Logger (10).
Старый 06.11.2018, 12:18   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
В 2012-й напрашивается навешать констрейнтов на поле Partition.
Старый 06.11.2018, 12:35   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Мне в подобной ситуации помогало, в некоторых случаях, создание filtered statistics.
Старый 06.11.2018, 12:38   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В итоге какая рекомендация? Если один партишн - написать скрипт на все таблицы с простановкой его в contraint? И аналогично для компаний? И ждать повышения скорости работы всей системы?
__________________
Ivanhoe as is..
Старый 06.11.2018, 12:45   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
В D365FO прикончили Partitions.
https://docs.microsoft.com/en-us/dyn...cated-features
Старый 06.11.2018, 12:57   #6  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от EVGL Посмотреть сообщение
В D365FO прикончили Partitions.
https://docs.microsoft.com/en-us/dyn...cated-features
В общем - микрософт опять закопал стюардессу. А могли бы просто не ломать виртуальные компании в DAX2012 и все жили бы долго и счастливо.
За это сообщение автора поблагодарили: eugene egorov (2), Logger (1).
Старый 06.11.2018, 13:20   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от fed Посмотреть сообщение
А могли бы просто не ломать виртуальные компании в DAX2012 и все жили бы долго и счастливо.
Да. Была наивная и несостоятельная аргументация, почему сломали. Мол, целостность данных нарушалась. Можно подумать, что c entity нельзя нарушить целостность данных.

Потом появилась System administration > Setup > Configure cross-company data sharing. Работает отлично... для горсти таблиц. Стоит что-нибудь посерьезнее условий доставки выбрать, как появляется
Цитата:
Table CUSTTABLE is a Main table as specified by the table group and may not be shared.
В 8.0 вроде как можно, но только для избранных:
https://docs.microsoft.com/en-us/bus...-vendor-tables
Старый 06.11.2018, 13:22   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
изящно ушли в сторону. Все-таки, какая рекомендация для версий Акс 3.0 - 2012?
__________________
Ivanhoe as is..
Старый 06.11.2018, 13:30   #9  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
изящно ушли в сторону. Все-таки, какая рекомендация для версий Акс 3.0 - 2012?
На самом деле, во всех версиях системы на сервер уходят запросы, где обязательно стоит dataareaId=='BLA' (ну и Partition=123456789). И в 99% случаев, система вполне в состоянии построить правильный план исполнения запроса со стандартными индексами и без constraints.
То есть - сам по себе метод интересный, но он полезен тогда, когда у тебя аномальное распределение данных в каком-то другом поле. Например если у тебя в системе 3-4 номенклатуры и есть индекс по inventTrans (itemId,DateStatus). Есть подозрение, что в этом случае, если прописать список номенклатур в check(), то система сможет использовать индекс для поиска по условию по дате без указания номенклатуры в where. То есть - механизм полезен для вырожденных случаев, а не для регулярных запросов.
За это сообщение автора поблагодарили: Ivanhoe (3).
Старый 06.11.2018, 14:31   #10  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Все-таки, какая рекомендация для версий Акс 3.0 - 2012?
В случае одной DataAreaId и/или Partition я предпочитаю их уничтожать в АХ. Это уменьшает занимаемое место на дисках и главное в памяти, хотя и не на много при использовании сжатия. Еще улучшается статистика, т.к. первое поле в индексе имеет подробную статистику по значениям.

PS. По моим наблюдениям еще один бонус - это более высокая вероятность распараллеливания онлайн-перендексации. При наличии полей DataAreaId и/или Partition в начале большого индекса онлайн-переиндесация далеко не всегда распараллеливается, даже при явном указании MAXDOP.
Старый 06.11.2018, 15:02   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Alexius Посмотреть сообщение
В случае одной DataAreaId и/или Partition я предпочитаю их уничтожать в АХ.
А как вы Partition в аксапте уничтожаете? Редактируете определение таблички в AOT ?
(Для DataAreaId вроде ключ командной строки был)
Старый 06.11.2018, 17:49   #12  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от Logger Посмотреть сообщение
А как вы Partition в аксапте уничтожаете? Редактируете определение таблички в AOT ?
Да, поштучно, т.к. таблички бывают очень большие и времени на остановку системы нет.
За это сообщение автора поблагодарили: Logger (3).
Старый 07.11.2018, 10:23   #13  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Кстати, совсем не факт, что SQL вообще начнет учитывать ограничения при построении плана запроса.
Так как такой способ не самый универсальный, то он вполне может почитать, что стоимость поиска наиболее оптимального плана может превысить стоимость самого выполнения пусть и не наиболее оптимального, но подходящего плана.
Заметил, что всякие ухищрения в подсказках про свои данные дает выигрыш только на какое-то время, а спустя некоторое время уже игнорируется. Вполне возможно, что как только что-то такое новое появляется, SQL это пробует рассмотреть в первую очередь, а дальше уже сморит на это среди других способов и не всегда доходит до наших стараний.
За это сообщение автора поблагодарили: Logger (3).
Теги
sql server, производительность, статистика

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stoneridgesoftware: How to Restore Inadvertently Deleted Accounts in Dynamics 365 (CRM modules) Blog bot DAX Blogs 0 12.01.2017 23:15
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
axinthefield: Top 10 issues discovered from Dynamics AX Health Check Blog bot DAX Blogs 0 27.06.2013 19:11

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

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

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