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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.10.2013, 18:15   #21  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Vadik Посмотреть сообщение
Интенсивная вставка ? Обновления ? Мы все еще индекс на InventDim по InventDimId обсуждаем ? Напомню, основной способ доступа - singleton_lookup
Интересно, почему так получилось ? Неужели настолько часто дергается find(). Мне казалось что Invnetdim очень часто в джоинах бывает. Или они тоже могут приводить к такому способу доступа ?
Старый 08.10.2013, 19:36   #22  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Цитата:
Сообщение от Vadik Посмотреть сообщение
Интенсивная вставка ? Обновления ? Мы все еще индекс на InventDim по InventDimId обсуждаем ? Напомню, основной способ доступа - singleton_lookup
AOS
Ну да, я имел ввиду что замена ключа на int64 и если он кластерный, в большей степени повлияет на процессы вставки и обновления, в любой таблице.

Цитата:
Сообщение от Vadik Посмотреть сообщение
А можно "на пальцах" показать как префиксы в номерной серии приводят к усиленной фрагментации при вставке ? А то мне как-то казалось что при выделении в рамках одной сессии значение номерной серии монотонно возрастает, а в случае множественных сессий и неиспользования предварительного выделения номеров из серии фрагментация даже меньше чем при индексе по RecId и множественных инстансах AOS
Вот тут хорошо описано про кластерные индексы http://www.somewheresomehow.ru/clust...key-selection/
На пальцах, записи физически отсортированы по кластерному индексу, если мы вставляем запись то с одним префиксом ключа то с другим (как здесь предлагалось для визуального разделения) системе приходится резервировать пустые места для вставки данных в разные места таблицы.
Старый 08.10.2013, 22:20   #23  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Logger Посмотреть сообщение
Интересно, почему так получилось ? Неужели настолько часто дергается find()
Просто индекс по INVENTDIMID для любых других применений кроме лукапа практически бесполезен. Суррогат, часто используется для выборки отдельной записи, редко (практически никогда) - для range_scan-а (никто не запрашивает INVENTDIM c INVENTDIMID с XXX по XYZ). По сути любой range_scan по нему - это fullscan (SELECT * FROM INVENTDIM WHERE DATAAREAID = 'ABC'), которого всячески избегают.
Цитата:
Сообщение от Logger Посмотреть сообщение
Мне казалось что Invnetdim очень часто в джоинах бывает. Или они тоже могут приводить к такому способу доступа ?
Ну так INVENTDIM просто так (без WHERE) как правило не джойнится, а с WHERE как правило уже немного другие индексы используются
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Ну да, я имел ввиду что замена ключа на int64 и если он кластерный, в большей степени повлияет на процессы вставки и обновления, в любой таблице.
Это уже немного "вообще и ниочем", в дискуссиях ТАКОГО уровня абстракции я участвовать пока не готов.
Что касается INVENTDIM, повторюсь - нагрузка на вставку есть "о малое" от общей, а обновлений нет.
По поводу кластерного индекса по RECID "вообще" - повторюсь: это ОЧЕНЬ большое упрощение полагать что RECID в AX ведет себя подобно IDENTITY - достаточно за пять минут набросать на бумажке как идет вставка в системе с двадцатью компаниями и пятью AOS-ами (спойлер - никакого "монотонного возрастания значений там рядом не стояло)
__________________
-ТСЯ или -ТЬСЯ ?
Старый 08.10.2013, 23:08   #24  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Vadik Посмотреть сообщение
По поводу кластерного индекса по RECID "вообще" - повторюсь: это ОЧЕНЬ большое упрощение полагать что RECID в AX ведет себя подобно IDENTITY - достаточно за пять минут набросать на бумажке как идет вставка в системе с двадцатью компаниями и пятью AOS-ами (спойлер - никакого "монотонного возрастания значений там рядом не стояло)
А вот в связи с этим интересно, зачем в 2012-й Аксапте до сих пор держатся за индексы по recId когда можно теснее интегрироваться с SQL Server и использовать разные специализированные примочки БД. Все равно, в отличие от предыдущих версий, база данных теперь одна, не нужно заморачиваться с совместимостью для разных БД.
Старый 08.10.2013, 23:43   #25  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
интересно, зачем в 2012-й Аксапте до сих пор держатся за индексы по recId когда можно теснее интегрироваться с SQL Server и использовать разные специализированные примочки БД.
Потому что нельзя вот так взять и в рамках одной версии переделать все до основания А еще потому что из-за нормализации данных и фиговой тучи связей между таблицами по FK (RecId) стало очень непросто подчас корректно создавать/обновлять/удалять связанные записи. Раньше можно было из номерной серии выделить заранее все идентификаторы и неспешно их прописывать, куда надо, в произвольном порядке, а теперь нужно соблюдать последовательность, поскольку PK (RecId) выделяется только на вставке. Чтобы упростить работу, в частности, был сделан UnitOfWork:
Цитата:
The UnitOfWork class automatically propagates the primary key value to the corresponding foreign key field, when the row with the foreign key field is inserted. The call pattern for inserts is first to add one record at a time to your constructed UnitOfWork object. After all the inserts have been added, you call the saveChanges method to persist the inserts to the database. The pattern is similar for updates and deletes. You can add inserts, updates, and deletes in succession, in any sequence, and then call the saveChanges method.
Проделать такое в случае, когда вместо выделяемого AOS'ом RecId будут выделяемые СУБД identity, будет м... несколько труднее.
За это сообщение автора поблагодарили: Logger (3).
Старый 09.10.2013, 19:16   #26  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Цитата:
Сообщение от Vadik Посмотреть сообщение
Это уже немного "вообще и ниочем", в дискуссиях ТАКОГО уровня абстракции я участвовать пока не готов.
Что касается INVENTDIM, повторюсь - нагрузка на вставку есть "о малое" от общей, а обновлений нет.
По поводу кластерного индекса по RECID "вообще" - повторюсь: это ОЧЕНЬ большое упрощение полагать что RECID в AX ведет себя подобно IDENTITY - достаточно за пять минут набросать на бумажке как идет вставка в системе с двадцатью компаниями и пятью AOS-ами (спойлер - никакого "монотонного возрастания значений там рядом не стояло)
Позвольте напомнить сам обсуждаемый вопрос:
Цитата:
Сообщение от twilight Посмотреть сообщение
..... Не лучше ли с точки зрения производительности, если бы InventDimId был бы типа int64?
Это не тоже самое что: давайте переделаем все связки через RecId.
Старый 09.10.2013, 19:25   #27  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Vadik Посмотреть сообщение
Ну так INVENTDIM просто так (без WHERE) как правило не джойнится, а с WHERE как правило уже немного другие индексы используются
Это принципиально ничего не меняет. По Inventdim - это поле как бы не используется, но все равно значение используется в индексах по табличкам с которыми идет джоин (InventSum.InventdimID, InventTrans.InventDimId и.т.п) Ну и кроме того если по нему есть кластерный индекс в Inventdim - т.е. по факту поле все равно присутствует во всех остальных индексах и остаются в силе все соображения про экономию места для хранения значений ключа.
Старый 09.10.2013, 20:02   #28  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Logger Посмотреть сообщение
Это принципиально ничего не меняет. По Inventdim - это поле как бы не используется, но все равно значение используется в индексах по табличкам с которыми идет джоин (InventSum.InventdimID, InventTrans.InventDimId и.т.п) Ну и кроме того если по нему есть кластерный индекс в Inventdim - т.е. по факту поле все равно присутствует во всех остальных индексах и остаются в силе все соображения про экономию места для хранения значений ключа.
Ну так я вроде очевидных фактов не отрицал
Осталось только продемонстрировать на сколько порядков увеличится производительность, и дело в шляпе
__________________
-ТСЯ или -ТЬСЯ ?
Старый 09.10.2013, 20:12   #29  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ну я тогда не понял просто зачем вы упомянули про выбор индексов.
Старый 10.10.2013, 12:48   #30  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
Цитата:
Сообщение от Vadik Посмотреть сообщение
Правда. Строка хранимая в юникоде как правило "длиннее" int64, это факт. А вот постулат о том что int64 "быстрее" (и насколько "быстрее") - неплохо было бы доказать
N лет назад оптимизировал кубы в базе, где номенклатура была набором цифр и кубы процессились доолго.
Когда кубы стали получать код номенклатуры в формате int (конвертация на уровне view), то процессинг ускорился раза в полтора-два
За это сообщение автора поблагодарили: twilight (1).
Теги
ax2012, inventdim, производительность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
InventDim::findOrCreate ice DAX: Программирование 24 23.12.2010 10:43
Вопросы по ReleaseUpdate DAX 2009 ansoft DAX: Программирование 7 31.08.2010 12:21
lookup для ItemId iz InventTable + InventDim + InventSum stalker25 DAX: Программирование 6 20.07.2009 15:50
InventDim.findOrCreateBlank - простое сложно? Pavlo AKA Panok DAX: Программирование 5 25.10.2004 16:50
Работа с InventDim... NJD DAX: Программирование 11 17.06.2004 14:42

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:31.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.