|
![]() |
#1 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Vadik (3). |
![]() |
#2 |
Модератор
|
по просьбам трудящихся, я полагаю..
![]() Цитата:
а вбить можно
Спасибо за наводку. Больше никаких изменений, связанных с index hints? Может быть, добавлялись интересные/полезные фичи?
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#3 |
Member
|
Цитата:
Сообщение от AlEr
...
Исчисление номера перевернуто, а вбить можно. ...
__________________
С уважением, glibs® |
|
![]() |
#4 |
Участник
|
|
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
У нас в Ax3+SP4+KR3+Oracle 9.2.0.6 тонкий клиент AOS. Сейчас тестируем.
Если поставить Hint flag = 32767, вообще жуткие глюки. Сразу пропадает Windows-аутентификация, Аксапта не находит юзеров ![]() Если hint flag не трогать, то он по-умолчанию равен 167 (получил из значения SQLSystem::databaseHints()), что вроде бы как соответствует дефолтовой настройке. Но поведение Аксапты при этом удивляет. Она ТАКИЕ хинты вставляет! Что разноска 1 строки перемещения происходит несколько минут. Выбирает плохие индексы. Установка hint flag = 0 решает проблему. Сразу почти все начинает летать, но некоторые запросы, наоборот, встают наглухо. Сейчас пробую 166 (типа index hint хочу отключить) - пока не поняли, что происходит. Не пойму, о чем идет речь, когда говорят, что hint перевернут. Судя по дефолтной настройке, все в норме. Может кто-нибудь пролить свет на эту темную сторону Аксапты? Перерыл весь форум, запутался в конец. |
|
![]() |
#7 |
Модератор
|
Форум рыть бесполезно. Поведение hint flags изменилось, как - великая тайна, не иначе. И ладно бы, но добавленная мегафича с навязыванием ядром индексов
![]() Я конечно задал вопрос здесь, но надежды на ответ мало... P.S. Ну вот, каких-то два часа экспериментов.. Ничего там не перевернуто. На KR3 хинты работают по-прежнему, навязывание индекса отключается с помощью SQLSystem::databaseHints() | 0x200. С остальными битами (старше 2 << 7) разбираться будем позже Кстати, для KR3+MSSQL значение index hints по умолчанию другое (191)
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: mazzy (5), glibs (3), raz (13), Logger (2). |
![]() |
#8 |
Участник
|
Цитата:
навязывание индекса отключается с помощью SQLSystem::databaseHints() | 0x200
Цитата:
Кстати, для KR3+MSSQL значение index hints по умолчанию другое (191)
|
|
![]() |
#9 |
Модератор
|
так точно
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Logger (1). |
![]() |
#10 |
Участник
|
Цитата:
Сообщение от Vadik
![]() Форум рыть бесполезно. Поведение hint flags изменилось, как - великая тайна, не иначе. И ладно бы, но добавленная мегафича с навязыванием ядром индексов
![]() Я конечно задал вопрос здесь, но надежды на ответ мало... P.S. Ну вот, каких-то два часа экспериментов.. Ничего там не перевернуто. На KR3 хинты работают по-прежнему, навязывание индекса отключается с помощью SQLSystem::databaseHints() | 0x200. С остальными битами (старше 2 << 7) разбираться будем позже Кстати, для KR3+MSSQL значение index hints по умолчанию другое (191) действительно поведение хинтов не изменилось. Ставим -hint=0 в параметрах и все работает - никаких хинтов в запросах нет ! База данных Оракл. Можето я что не так сделал ? У кого были неприятности с хинтами, опишите пожалуйста подробнее как воспроизвести. Я пока не нашел отличий от SP3 или от SP5 |
|
![]() |
#11 |
Участник
|
Цитата:
![]() |
|
|
За это сообщение автора поблагодарили: Logger (1). |
![]() |
#12 |
Участник
|
У нас Ax 3.0 + SP4 + KR3 + Oracle 9.2.0.6
Честно сказать, я пробовал играться с хинтами (и как Vadik советует тоже), но не смог добиться отключения навязывания хинтов ядром. Если хинты отключаются, то полностью, т.е. кодерские хинты тоже ![]() После некоторых исследований поставил два параметра Oracle: index_adj = 10, index_cache = 95 (полные названия не помню). После этого Oracle полюбил сканирование индексов и формы почти все залетали за редким исключением. Кроме того, Аксапта "навязывание" индексов делает более умно (как мне показалось), поскольку query plan изменился на Оракле, а Аксапта его смотрит. Единственное, что я сделал, изменил индекс на InventTrans по статусам проводки, который Аксапта подставляла куда ни попадя там, где требуется сканирование по InventTransId. Сейчас все более-менее стабильно, но нагрузка на Оракл в KR3 больше
__________________
|
|
![]() |
#13 |
Участник
|
Цитата:
Интересуют прежде всего HINT_FORCE_SELECT_ORDER (32) и HINT_FORCE_NESTED_LOOP (128) для Оракла. |
|
![]() |
#14 |
Модератор
|
Хотел поковыряться на выходных (чесслово
![]() Цитата:
Интересуют прежде всего
HINT_FORCE_SELECT_ORDER (32) и HINT_FORCE_NESTED_LOOP (128) для Оракла
Но HINT_FORCE_SELECT_ORDER и HINT_FORCE_NESTED_LOOP только из X++ выстреливаются и необходимости в дополнительных опциях для них нет.. Или есть?
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#15 |
Участник
|
Спасибо за исследование. Очень нам помогло.
Интерес был практический, потому как у нас сначала вообще все хинты были выключены. Но сейчас мы готовы работать уже и с включенными HINT_FORCE_SELECT_ORDER и HINT_FORCE_NESTED_LOOP так что сейчас вопрос уже стал академическим. ![]() По поводу HINT_FORCE_SELECT_ORDER и HINT_FORCE_NESTED_LOOP на формах и из кода - по идее возможна разница. Потому что на формах в датасорсах используется обычный Query и на нем есть возможность взвести эти хинты Query.forceNestedLoop() и Query.forceSelectOrder() Но это бум проверять. P.S. А вообще со стороны Microsoft это подставлялово - менять таким образом хинты и не давать инструкций как ими пользоваться. |
|
Теги |
ax3.0, databasehints, hint, kr3, oracle, sql, sql server, баг, ошибка, ядро |
|
|