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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.12.2017, 14:59   #1  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
Параметр Scroll Option при создании курсора sp_cursorprepexec
Добрый день!

Ax 4.0, база данных SQL Server 2008 R2.

При создании курсора в БД SQL аксапта пользуется процедурой sp_cursorprepexec, создавая запрос примерно такого вида:

X++:
declare @p1 int
set @p1=-1
declare @p2 int
set @p2=0
declare @p5 int
set @p5=4098
declare @p6 int
set @p6=8193
declare @p7 int
set @p7=0
exec sp_cursorprepexec @p1 output,
                       @p2 output,
                       N'@P1 nvarchar(8)',
                       N'SELECT ... FROM LEDGERTRANS A,LEDGERJOURNALTRANS B WHERE ((A.DATAAREAID=@P1) ...',
                       @p5 output,
                       @p6 output,
                       @p7 output,
                       N'dat'
select @p1, @p2, @p5, @p6, @p7
в параметре @p5 в процедуру передаются параметры прокрутки для создаваемого курсора (scroll options).

Вопрос в том, возможно ли как-то влиять на этот параметр настройками или аксапта сама решает какие значения туда подставлять?

Проблема возникла в небольшом отчете. В боевом приложении отчет стал страшно тупить. Однако в тестовом приложении отрабатывает моментально. Код обоих отчетов в приложениях одинаков. База и приложение синхронизировались относительно недавно (где-то месяц назад).

Расследование с помощью профайлера показало, что на боевом приложении в этот параметр передается значение:
@p5 = 4098, т.е. сумму флагов DYNAMIC | PARAMETERIZED_STMT.

В тестовом приложении в этот параметр передается значение:
@p5 = 20496, т.е. сумму флагов FAST_FORWARD | PARAMETERIZED_STMT | AUTO_CLOSE.

Разный набор флагов кардинально меняет план исполнения запроса, что приводит к замедлению исполнения.
Старый 22.12.2017, 16:14   #2  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
Пока что удалось найти вот такой пост:https://github.com/dklinger/dynperf/...I%20Cursor.sql

Вот выдержка из него:

X++:
----------------------------------------------
-- Normal FFO Cursor
----------------------------------------------
-- Fast Forward(16)+Parameterized(4096)+AutoFetch(8192)+AutoClose(16384)
--
set @p5=16+4096+8192+16384  --28688


----------------------------------------------
-- FFO Cursor Retrieving Text or Image Column
----------------------------------------------
-- Fast Forward(16)+Parameterized(4096)+AutoClose(16384)
-- 
set @p5=16+4096+16384  --20496


----------------------------------------------
-- Pessimistic Lock Cursor
-- This will change soon to be FFO
----------------------------------------------
-- Dynamic(2)+ Parameterized(4096)
--
set @p5=2+4096   --4098


----------------------------------------------
-- Typical Cursor for Form
----------------------------------------------
-- Fast Forward(16)+Parameterized(4096)+AutoFetch(8192)+AutoClose(16384)
--
set @p5=16+4096+8192+16384  --28688
Получается, что у меня почему-то в одном приложении запускается "Pessimistic Lock Cursor" (зачем?!), а в другом "FFO Cursor Retrieving Text or Image Column".

Не пойму почему курсор открывается с Pessimistic Lock?

На всех таблицах, участвующих в Query, свойство OccEnabled установлено в Yes.
В самом Query у всех DataSource свойства:
SelectWithRepeatableRead=No,
ConcurenceModel=Auto.

Настройки Конфигурации конкурентной модели (Администрирование - Настройка - Система - Конфигурации конкурентной модели) обоих приложений одинаковы: "Режим оптимистичной конкуренции включен для таблицы".

PS: Поиск также вывел на книгу "Dynamics AX Performance Optimization Guide" (Martin Zhen & Daniel Liao). Вроде как в ней есть интересная глава "OPTIMIZING DYNAMICS AX SQL STATEMENT". Но, к сожалению, не нашел ее в открытом доступе. Поможет она или нет, не понятно. Может кто встречал такую книгу?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
The right cloud option for your business sukhanchik DAX Blogs 6 26.02.2017 17:26
emeadaxsupport: Installation of MS Dynamics AX 2009 SP 1 on Windows XP SP 3 Blog bot DAX Blogs 0 22.06.2014 21:16
atinkerersnotebook: Process Multiple Records At Once By Using The Multi-Select Option Blog bot DAX Blogs 0 03.03.2014 15:11
emeadaxsupport: Details and workarounds for the Split based on delivery information option for purchase orders that was removed in Microsoft Dynamics AX 2012. Blog bot DAX Blogs 0 07.11.2013 00:11
X++: New Option to Log X++ Max-Length String Truncation Blog bot DAX Blogs 0 07.10.2011 04:12
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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