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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.01.2007, 11:55   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
[axapta 4.0] - index и index hint
Если я не ошибаюсь, в своем выступлении Алексей Еременко говорил о том, что в 4.0 решили отказаться от поддержки хинтов, и, в частности, index hint.

Может кто-нибудь прокомментировать этот момент. Я его неправильно понял?
Залез сегодня в 4-ку - хинт по-прежнему поддерживается.
Старый 24.01.2007, 12:03   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Правильно поняли, во всяком случае, так же, как и я.

Решено было отказаться от использования хинтов, а не от их поддержки. То есть, SQL Server сейчас лучше сам определит, где какой индекс использовать, и навязывание ему конкретной стратегии может замедлить процесс выборки данных.

Но, естесственно, в приложении осталось куча кода, в котором они используются.
Старый 24.01.2007, 12:19   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Но, естесственно, в приложении осталось куча кода, в котором они используются.
И среда исполнения, встретив хинт, сформирует такой же запрос, как и в 3.0? Или проигнорирует его?
Старый 24.01.2007, 13:25   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Андре Посмотреть сообщение
И среда исполнения, встретив хинт, сформирует такой же запрос, как и в 3.0? Или проигнорирует его?
Встретив хинт сформирует такой же запрос как и в 3.0 (правда, еще не проверял).
Речь идет о том, что стандартный функционал не будет содержать хинтов.
чтобы не пришлось давать вот такие советы http://axapta.mazzy.ru/lib/querytuning/
__________________
полезное на axForum, github, vk, coub.
Старый 24.01.2007, 15:42   #5  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от kashperuk
...
SQL Server сейчас лучше сам определит, где какой индекс использовать
...
Я, конечно, в SQL Server не профи, но, по-моему и раньше тоже так было.

Но вот с Oracle (с ним я вообще не работал, только по наслышке) вроде как без хинтов ничего нормально не работает. Собственно этим о объясняется их неимоверное количество в коде Аксапты.

Если это правда, то как понимать заявление господ из Микрософта (его я тоже еще не выкачивал, но Андре склонен доверять)?
__________________
С уважением,
glibs®
Старый 24.01.2007, 16:15   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
В общем, Алексей там как-то очень туманно выразился. Из объяснений kashperuk и mazzy следует, что разработчики mbs (кстати какие - российские, штаб-квартира...) обязались не использоват index hint. Здорово конечно, но при наличии данного инструмента в системе разработчики партнеров и клиента по прежнему будут его использовать. А вот как раз их я и боюсь
Кстати, Алексей там еще и про forupdate высказался. Как без него будут разруливаться конфликты я вообще не понял.....

Цитата:
Но вот с Oracle (с ним я вообще не работал, только по наслышке) вроде как без хинтов ничего нормально не работает.
Работает, только оптимизатор Oracle требует большей заботы и внимания.
Старый 24.01.2007, 16:25   #7  
Sirius is offline
Sirius
Участник
 
151 / 10 (1) +
Регистрация: 10.01.2004
Адрес: Новосибирск
Цитата:
Сообщение от Андре Посмотреть сообщение
Кстати, Алексей там еще и про forupdate высказался. Как без него будут разруливаться конфликты я вообще не понял.....
насколько я понял, без forupdate можно работать будет только на SQL2005 (может и на Оракле).. дело в том, что SQL2005 стал версионником (т.е. теперь если одна транзакция начала изменения, то все другие могут иметь доступ к этим данным, но будут видеть их изначальные значения, т.е. игнорировать все что наизменяла первая транзакция, ну а далее видимо проверка по номеру версии строки и все дела)
Старый 24.01.2007, 16:26   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Залез сегодня в 4-ку - хинт по-прежнему поддерживается
"Присутствует в коде" не означает "попадает в запрос". Собственно, как и в 3.0

Просто вынесли битовый флаг из HINT FLAGS отдельной опцией в конфигурационной утилите (Database tuning \ Allow index hints in queries) и по умолчанию отключили ее

Цитата:
Здорово конечно, но при наличии данного инструмента в системе разработчики партнеров и клиента по прежнему будут его использовать. А вот как раз их я и боюсь
не тех боитесь
__________________
-ТСЯ или -ТЬСЯ ?
Старый 24.01.2007, 16:34   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Просто вынесли битовый флаг из HINT FLAGS отдельной опцией в конфигурационной утилите(Database tuning \ Allow index hints in queries) и по умолчанию отключили ее
Я правильно понимаю, что при отключенной этой опции ядро Аксапты игнорирует все index-хинты?
Старый 24.01.2007, 16:36   #10  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
дело в том, что SQL2005 стал версионником
Версионник, версионником... но....

Пользователь 1 сказал: select t
Пользователь 2 сказал select тот же самый t
Пользователь 1 сказал t.update()
Пользователь 2 сказал t.update()

Система сказала: ???
Старый 24.01.2007, 16:41   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
...пользователю 2 - иди нафиг.
Старый 24.01.2007, 16:42   #12  
Sirius is offline
Sirius
Участник
 
151 / 10 (1) +
Регистрация: 10.01.2004
Адрес: Новосибирск
как мне кажется будет работать:

пользователь 2 делает t.update() - система видит чтоверсия строки его t не совпадает с версией этой строки имеющейся в БД, следовательно налицо конфликт обновления, т.е. ктото уже успел изменить строку, пока он размышлял над своими дальнейшими действиями...

подчеркну что это только пока мои догадки - не было времени разбираться...
Старый 24.01.2007, 16:43   #13  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Андре Посмотреть сообщение
Кстати, Алексей там еще и про forupdate высказался. Как без него будут разруливаться конфликты я вообще не понял...
В своем посте "Излучая оптимизм" он пишет
С точки зрения Microsoft Dynamics Ax модель OCC, реализованная в 4.0, состоит из следующих областей:
  • Удаления (выключения) подсказок типа 'forupdate' в коде X++ (со стороны ядра).
  • При обновлении одного или нескольких столбцов строки происходит проверка статуса изменения значения со времени, когда значение было считано в транзакции. Если значение было изменено, возникает исключительная ситуация и ядро генерирует исключение (Exception::UpdateConflict)
  • X++ код изменен для обработки таких исключений в обработчике try-catch
Старый 24.01.2007, 16:45   #14  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Андре Посмотреть сообщение
Я правильно понимаю, что при отключенной этой опции ядро Аксапты игнорирует все index-хинты?
так точно
__________________
-ТСЯ или -ТЬСЯ ?
Старый 24.01.2007, 16:54   #15  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
...пользователю 2 - иди нафиг.
На месте пользователя 2 я бы жутко обиделся.
Могла бы послать меня на этапе select, пока я НЕ потратил кучу времени на внесение изменений. В общем то, forupdate неплохо решал эту задачу.

Последний раз редактировалось Андре; 24.01.2007 в 16:59.
Старый 24.01.2007, 17:25   #16  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от Андре Посмотреть сообщение
На месте пользователя 2 я бы жутко обиделся.
Могла бы послать меня на этапе select, пока я НЕ потратил кучу времени на внесение изменений. В общем то, forupdate неплохо решал эту задачу.
А так?

Пользователь 1: select T
Пользователь 2: insert into R select from T
Пользователь 1: update T
Пользователь 2: select R - что получит??
Старый 24.01.2007, 17:42   #17  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
А так?

Пользователь 1: select T
Пользователь 2: insert into R select from T
Пользователь 1: update T
Пользователь 2: select R - что получит??
Я четверку пока не смотрел. Раньше зависело от наличия/отсутствия forupdate.
Старый 24.01.2007, 17:48   #18  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от Андре Посмотреть сообщение
Я четверку пока не смотрел. Раньше зависело от наличия/отсутствия forupdate.
Дык, вот в этом и вопрос - если модель оптимистичная - мы получаем грязное чтение? Я все в этой модели понял и со всем согласен - кроме этого..
Старый 24.01.2007, 20:00   #19  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Sirius
...
без forupdate можно работать будет только на SQL2005 (может и на Оракле).. дело в том, что SQL2005 стал версионником (т.е. теперь если одна транзакция начала изменения, то все другие могут иметь доступ к этим данным, но будут видеть их изначальные значения, т.е. игнорировать все что наизменяла первая транзакция, ну а далее видимо проверка по номеру версии строки и все дела)
...
Чего-то я не понял. Но в 4.0 поддержку 2000-го, вроде, пока не отменили. Стало быть без forupdate код писать нельзя. Или оно теперь по-другому работать стало на уровне ядра?

А то я еще в такие дебри не успел углубиться.

Там еще есть интересный параметр для 2000-го, который, насколько я могу догадываться из названия, обеспечивает грязное чтение даже при считывании внутри транзакции.
__________________
С уважением,
glibs®
Старый 25.01.2007, 10:06   #20  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Чего-то я не понял. Но в 4.0 поддержку 2000-го, вроде, пока не отменили.
На самом деле, про forupdate - это скорее вопрос Алексею, как то он довольно расплывчато рассказал про этот момент. Да и не верится мне, что пользователей так будут обламывать:

Цитата:
...пользователю 2 - иди нафиг.
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как указать сиквелу hint INDEX SHiSHok DAX: Программирование 9 14.11.2007 15:09
Fred Shen: Tips on optimizing primary index in Axapta Blog bot DAX Blogs 0 28.10.2006 16:40
База на Oracle : убить index hint YaHooka DAX: Программирование 12 19.07.2005 11:13
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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