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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.06.2007, 05:56   #41  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
Что вы людям голову морочите?
У этого запроса даже синтаксис неправильный.
Прошу прощения, код был удалён восстанавливал по памяти. Память подвела . Не думал что кто то будет проверять, думал так показать общий смысл…
Вот корректный код запроса:

X++:
    queryText   =
    strfmt(
      "SELECT * "
    + " FROM       RASSETTABLE A INNER JOIN"
    + "  RASSETTRANS B ON A.ACCOUNTNUM = B.ACCOUNTNUM INNER JOIN"
    + "  LEDGERTRANS C ON B.VGP_LEDGERLINKID = C.VGP_LEDGERLINKID AND B.VOUCHER = C.VOUCHER AND"
    + "  B.TRANSDATE = C.TRANSDATE"
    + " WHERE     (A.DATAAREAID = '%5') AND (A.VGP_PROPERTYTAX = %4) AND (B.DATAAREAID = '%5') AND (B.ASSETTRANSTYPE = %2) AND"
    + " (B.TRANSDATE <= CONVERT(DATETIME,'%1', 102)) AND (C.DATAAREAID = 'vgp') AND (C.VGP_LEDGERLINKMODULEREF = %3)"
    + " ORDER BY A.DATAAREAID, A.ACCOUNTNUM, B.DATAAREAID, B.ACCOUNTNUM, B.ASSETTRANSTYPE, C.DATAAREAID, C.VGP_LEDGERLINKID,"
    + " C.VGP_LEDGERLINKMODULEREF" + " OPTION (FAST 4)"
    , date2str( reportDateEnd,321,2,4,2,4,4), ip2, ip3, ip4, CurExt()   );
Старый 26.06.2007, 06:03   #42  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Деадлоки проверял (при наличии юзеров) отсутствуют.
В какую сторону рыть?!

Последний раз редактировалось 3oppo; 26.06.2007 в 11:36.
Старый 26.06.2007, 07:45   #43  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Такое впечатление, что запросы стоят в некой очереди, а прямой заброс пролазит вне очереди. Только что с админом сидел рассматривали счётчики и блокировки вроде всё в норме… .. . Похоже что эта очередь создаётся Аксаптой. Она же под одним пользователем ходит в базу, хотя причём тут это… .. .
Проверил влияние прямого запроса на блокировки. Как посоветовал Mazzy. Отрабатывает сразу 5 секундный пик, но заним идёт 10 секундная полная блокировка!!! Попробую нарисовать:

X++:
.      __
__/\/    \_
То есть общее время блокирование t * 3. Да это не есть гуд.

Последний раз редактировалось 3oppo; 27.06.2007 в 06:52.
Старый 26.06.2007, 08:15   #44  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 3oppo Посмотреть сообщение
Такое впечатление, что запросы стоят в некой очереди, а прямой заброс пролазит вне очереди.
Аксапта не занимается очередями.

Поскольку вы говорите о "SQL Enterprise Manager" и не знаете "Management Studio", рискну предположить, что у вас SQL 2000.

Раз у вас SQL 2000, то у вас есть блокировки на чтение.

Пилите дальше. Какая блокировка выполняется при выполнении Аксаптовского запроса, а какая при выполнении прямого? Если вы сейчас скажете "никакая", то не соглашусь и попрошу сказать уровень изоляции для выполняемого запроса.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: George Nordic (2).
Старый 26.06.2007, 08:57   #45  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Да Аксапта на SQL 2000, хотя 2005 недавно купили но Аксапту на него не перевели?! А что есть смысл?!
Вопрос в следующем, ну найду я что за блокировка лезет, а что дальше то?!

Последний раз редактировалось 3oppo; 26.06.2007 в 10:35.
Старый 26.06.2007, 12:37   #46  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Я вот одного не пойму.
Зорро, Вы же сами написали, что если в запросе указать не весь перечень полей (исключив картинки большие), то запрос отрабатывает за малое время.

То есть, из этого должно было стать понятно, что запрос нормально отрабатывает и все дело в картинках.

Что Вы дальше тут еще пытаетесь оптимизировать??
Старый 27.06.2007, 06:53   #47  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
В каких картинках?! Про картинке, это так кто то ляпнул шутя. Там нет никаких картинок и записи мне нужны все!
Взвесив все за и против склоняюсь к использованию прямого запроса.

Последний раз редактировалось 3oppo; 27.06.2007 в 06:56.
Старый 27.06.2007, 09:31   #48  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от 3oppo Посмотреть сообщение
В каких картинках?! Про картинке, это так кто то ляпнул шутя. Там нет никаких картинок и записи мне нужны все!
Взвесив все за и против склоняюсь к использованию прямого запроса.
Я про вот этот пост.
Почему join запрос разбивается на подзапросы!?
Все поля врядли нужны всегда. имхо
Старый 27.06.2007, 09:48   #49  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А вы пробовали запрос через Connection а не через ODBCConnection?
Старый 27.06.2007, 12:30   #50  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Дело в том что код объемный и не мой, досконально его изучать нету желания. Я не знаю на 100% какую инфу потом будут дёргать из этой выборки. Не включишь поле, а оно используется, и с этим такой геморрой можно будет выхватить… .. . Ошибки ведь не будет просто нету данных и всё! И не понятно когда она вылезет.
Нет с Connection я не пробовал, а зачем?! Что мне это даст!?
Старый 27.06.2007, 12:32   #51  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от 3oppo Посмотреть сообщение
Нет с Connection я не пробовал, а зачем?! Что мне это даст!?
По крайней мере, можно уточнить, не кроится ли разница в настройках соединения
Старый 27.06.2007, 12:34   #52  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Хм.
Но вы же привели код метода и указали, что он полный. А в этом коде используются только _rassetTable.AccountNum и _ledgerTrans.AccountNum.
Или опять о чем-то умолчали?

PS Кстати, был неправ насчет exists join запроса. В данном случае он не подойдет
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 27.06.2007 в 12:37.
Старый 27.06.2007, 22:19   #53  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Зорро.

Сам по себе очень интересный основной запрос, который выгребает все проводки от начала времен до какой-то даты, а потом по ним в цикле строится какой-то мап. Просто интересно, сколько он уже эксплуатируется и как за это время подросла базулька? И как Вы думаете, когда этот цикл будет исполняться не 4800 раз, а 10 тыс или 100тыс поможет оптимизация основного запроса?

Если этот запрос выполняется по неизменяемым данным, то можно использовать хинт NOLOCK, что позволит преодолеть чужие блокировоки на таблицах.

Посмотрите, наконец, планы исполнения запроса в рабочем режиме и из QA, так как только план запроса скажет Вам ПОЧЕМУ различается время исполнения из QA и из аксапты (но не скажет почему различаются планы )

Вы привели точный текст запроса из профайлера или подсократили упоминание индексов в нем?
Старый 28.06.2007, 07:11   #54  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от AndyD Посмотреть сообщение
Хм.
Но вы же привели код метода и указали, что он полный. А в этом коде используются только _rassetTable.AccountNum и _ledgerTrans.AccountNum.
Или опять о чем-то умолчали?
Да умолчал о том что, в данном отчёте подобная выборка используется не только в этом методе, но ещё и несколько раз по коду, с незначительными изменениями! Данные не запоминаются не в каких временных таблицах, а просто это выборка повторяется опять и опять с другими целями.



Цитата:
Сообщение от Wamr Посмотреть сообщение
Сам по себе очень интересный основной запрос, который выгребает все проводки от начала времен до какой-то даты, а потом по ним в цикле строится какой-то мап. Просто интересно, сколько он уже эксплуатируется и как за это время подросла базулька? И как Вы думаете, когда этот цикл будет исполняться не 4800 раз, а 10 тыс или 100тыс поможет оптимизация основного запроса?
Вот то-то и оно. Эксплуатируется 3 года, после «успешного внедрения» внедренцы получили свои денежки и свалили, а сей час пользователи стали жаловаться, что очень медленно отчеты формируется, да ещё и неправильно. Полез разбираться, и наткнулся на эту «корягу».


Цитата:
Сообщение от Wamr Посмотреть сообщение
Если этот запрос выполняется по неизменяемым данным, то можно использовать хинт NOLOCK, что позволит преодолеть чужие блокировоки на таблицах.
Не подходит.

Цитата:
Сообщение от Wamr Посмотреть сообщение
Посмотрите, наконец, планы исполнения запроса в рабочем режиме и из QA, так как только план запроса скажет Вам ПОЧЕМУ различается время исполнения из QA и из аксапты (но не скажет почему различаются планы )
Что то пользу от плана я не совсем понял. Ну видно какие индексы использует и чё?!
Цитата:
Сообщение от Wamr Посмотреть сообщение
Вы привели точный текст запроса из профайлера или подсократили упоминание индексов в нем?
Абсолютно точный код, скопировал весь метод полностью. Удаление индексов из запроса всё таки даёт некоторый выигрыш но не очень значительный.

Последний раз редактировалось 3oppo; 28.06.2007 в 07:13.
Старый 28.06.2007, 08:41   #56  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Зорро.
Я спрашивал про SQL из поста. Смущает, что в нем нет упоминание индексов, хотя в приведенном аксаптовском коде они есть.
Может быть покажите (сами посмотрите) реальные планы из MS-профайлера?
За это сообщение автора поблагодарили: 3oppo (1).
Старый 28.06.2007, 09:31   #57  
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
Wamr, вы ничего не путаете? Просто по моим наблюдениям Аксаптовский index работает как ORDER BY, а индекс хинты в запрос, который уходит на SQL, вставляет только index hint. Правда, экспериментировал на эту тему я, по-моему, на 3.0 сп5 кр3 после того, как началось обсуждение подлого поведения ядра Аксапты, когда оно на свое усмотрение начало подставлять индекс хинты в запрос. Может это от версии ядра зависит...

Хотя нет. В мануале написано, что так и должно быть.
__________________
С уважением,
glibs®
Старый 28.06.2007, 09:53   #58  
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
Дочитал мануал до конца. Кажись, я погорячился. Там все-таки неоднозначно написано. Прошу прощения.
__________________
С уважением,
glibs®
Старый 28.06.2007, 11:42   #59  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Устал гадать, да и времени нету больше. Буду юзать прямой запрос!
ВСЕМ СПАСИБО, за желание разобраться и помочь.
Старый 28.06.2007, 11:52   #60  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
и в самом деле, "чего думать? трясти надо!"
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: oip (1).
Теги
производительность, запрос (query), ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не отрабатывает запрос EXISTS JOIN Paul_ST DAX: База знаний и проекты 8 21.03.2008 17:21
запрос с 4 таблицами. Загадка с Join Андрей К. DAX: Программирование 7 19.09.2007 17:12
Почему на форме "Пользовательские настройки", когда я перехожу в нее из формы, отсутствует закладка "Запрос"? Hans DAX: Администрирование 0 05.07.2007 13:52
2 join-а + CasheLookup = EntireTable vallys DAX: Программирование 1 10.03.2006 13:20
можно ли сделать с помощью join следующий запрос: SergAY DAX: Программирование 1 29.07.2003 11:39

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

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

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