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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.08.2009, 14:21   #1  
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
Цитата:
Сообщение от S.Kuskov
...
правильно ли я понимаю, что на самом деле этот код не подходит под определение тяжёлых запросов, способных положить систему?
...
А при чем тут вообще тяжелый запрос? Буфер имеет отношение к коммуникации АОСа и клиента Аксапты.

Что-то у меня нигде не воспроизводится. Может вы каких полей в таблицы понадобавляли. А если писать что-то вроде

exists join TableId from CustTable

тоже ругается?
__________________
С уважением,
glibs®
Старый 24.08.2009, 14:47   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от glibs Посмотреть сообщение
Буфер имеет отношение к коммуникации АОСа и клиента Аксапты.
Тогда тем более не понятно, чем результирующая выборка (ведь только она и будет передаваться между AOC и клиентом) неугадила?

Цитата:
Сообщение от glibs Посмотреть сообщение
Что-то у меня нигде не воспроизводится. Может вы каких полей в таблицы понадобавляли.
Нет, все поля стандартные.

У меня значение буфера не указано (по умолчанию)
количество строк в таблицах ~
ContactPerson = 30,
CustTable = 3000
SalesTable = 30000
В результате превышение буфера на 4 кб

Цитата:
Сообщение от glibs Посмотреть сообщение
А если писать что-то вроде exists join TableId from CustTable тоже ругается?
Да, так тоже пробовал. Не помогает
Старый 24.08.2009, 14:57   #3  
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
Цитата:
Сообщение от S.Kuskov
...
Тогда тем более не понятно, чем результирующая выборка (ведь только она и будет передаваться между AOC и клиентом) неугадила?
...
Тут дело не в выборке, насколько я знаю, а в том, что при обмене данных между АОСом и клиентом производится таким образом, что данные для источников данных для форм передаются не все сразу, а пакетами. Размер такого пакета не будет превышать максимальную величину буфера в настройке. В зависимости от запроса в пакет может попасть много, несколько или одна запись. А если результирующая запись не влазит в буфер, то должна быть ошибка как у вас. Это нужно для того, чтобы увеличить скорость отклика системы на действия пользователя на каналах с невысокой пропускной способностью.

AX2009 вам пишет, что Аксапта ошибается при расчете длины результирующей записи. Похоже на то, хотя я лично не могу быть уверен. Попробуйте поискать про буфер. Кажется, уже было достаточно.
__________________
С уважением,
glibs®
Старый 24.08.2009, 15:15   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ага. Значит это величина одной записи не влезает в буфер. Тогда действительно если посчитать все поля(Параметр Maximum buffer size в настройках AOS) всех трёх таблиц , то получается что

X++:
    info(int2str(SysDictTable::newTableId(tableNum(ContactPerson)).recordSize()));
    info(int2str(SysDictTable::newTableId(tableNum(CustTable)).recordSize()));
    info(int2str(SysDictTable::newTableId(tableNum(SalesTable)).recordSize()));

9396
3813
8669


Такая сумма в полне сравнима с размером буфера.

Ну что ж, ситуация немного прояснилась. Остаётся только ждать и надеятся на её изменение в будущих версиях.
За это сообщение автора поблагодарили: alex55 (1).
Старый 24.08.2009, 17:18   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Добавлю, что этот параметр следует увеличивать крайне аккуратно, так как память указанного размере выделяется на AOS каждый раз при открытии нового соединения с БД (например, при работе с номерными сериями). Пару раз наблюдал, что чрезмерно завышенное значение данного параметра приводило к перерасходу памяти на AOS, а в предельном случае и к ее утечкам.
Теги
ax4.0, buffer, buffer size, exists, join, maximum buffer size

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Параметр Maximum buffer size в настройках AOS Bishop DAX: Администрирование 4 15.03.2016 16:49
Падает АОС - ax32Serv buffer overrun... Jony DAX: Администрирование 19 09.04.2009 16:18
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
JOPX: Changing the default maximum size of SharePoint WSP files Blog bot DAX Blogs 0 05.04.2008 19:12
Fred Shen: Cache size for recId allocation Blog bot DAX Blogs 0 28.10.2006 16:40
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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