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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.11.2007, 12:58   #1  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Расположение временных таблиц?
Добрый день всем!
Помогоите пожалуйста понять где AX располагает временные таблицы?
На клиенте? На сервере приложений? В основной базе? В tempdb?
Или по ситуации (может от объема данных) перемещает ее данные?
С уважением, Андрей.
Старый 28.11.2007, 13:02   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Временные таблицы создаются в отдельных файлах на жестком диске на уровне сервера или клиента.
Размещение зависит от того, где была вставлена первая запись.

То есть, если первую запись создали на стороне клиента, то там и файл будет.
До 128 Кб временные таблицы храняться в памяти, а не на диске.
Старый 28.11.2007, 13:14   #3  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Т.е. AX не анализирует объем данных вставляемых во временные таблицы для перемещения больших объемов в tempdb и все будет лить в файл? А запрос к временной таблице, если она связана с не временной AX будет клеить сам...?
Старый 28.11.2007, 13:16   #4  
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
Ниже цитата из руководства разработчика до кучи. И посмотрите еще поиск по форуму, много раз уже обсуждалось.

Temporary tables
Regard temporary tables as a temporary variable used to hold a table. A temporary table is intended to be used as a buffer for table data in X++ programs. Temporary tables are declared just like any other variable, and have the following characteristics:

They do not contain any data when they are first created

They obey normal scoping rules, that is, their scope is determined by where they are declared

They are automatically deleted by MorphX when they go out of scope

Temporary tables are not persistent. They are written to local disk storage but not stored in the database.

Temporary tables are used when you want a variable in X++ that has the same structure and characteristics as a table.

A note on temporary tables in a client-server environment, .

Temporary tables versus containers
MorphX supports a special data type called a container. In some cases this data type can be used in the same way as you would use a temporary table. If you want to read about the container data type, click .

One major difference between temporary tables and containers is that data in containers are stored sequentially, and thus retrieved sequentially, while a temporary table allows you to define indexes to speed up data retrieval. This means that containers provide slower data access if you are working with large numbers of records. However, if you are working with only a few records, you should use a container.

Another important difference between temporary tables and containers, is when using a temporary table in a method call, the information is passed by reference, while containers are passed by value. This means that if you are using a container as a parameter in a method call, it will be pushed on the system stack. If you are keeping many records in a container, and then pass it as a parameter, it will be pushed on the internal system stack. If your computer has a limited amount of memory, this causes the computer to start swapping part of the memory space to the disk, which slows down the execution of your application. In this case you should use a temporary table instead of a container.

Creating a temporary table
Temporary tables are created just like any other table. The only thing you have to do, is to set the Temporary property to Yes. To learn how to create a table, click .
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: Logger (1).
Старый 28.11.2007, 13:19   #5  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Можете ответить дополнительно на такой вопрос: Для чего AX использует tempdb? для каких-то внутренних целей? В tempdb появляются блокировки привязанные к отдельным сессиям пользователей... причем в момент формирования отчетов на временных таблицах.
Старый 28.11.2007, 13:35   #6  
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
Цитата:
Сообщение от ansoft
...
Для чего AX использует tempdb?
...
Если речь идет о tempdb MS SQL, то Аксапта ее непосредственно вообще не использует. У нее свой формат и свои физические файлы.
__________________
С уважением,
glibs®
Старый 28.11.2007, 13:42   #7  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от ansoft Посмотреть сообщение
В tempdb появляются блокировки привязанные к отдельным сессиям пользователей... причем в момент формирования отчетов на временных таблицах.
Этого не может быть, если понимать что временные таблицы это таблицы с property temporary. Временная таблица это некая сущность хранимая в памяти или физическом файле, как отметил kashperuk, она никоим образом с хранением на sql не завязана. А вот выборка из реальных таблиц на sql для заполнения временной имеет место быть. Но почему происходят блокировки при этом это вопрос.
Старый 28.11.2007, 13:56   #8  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Речь идет именно о MSSQL и tempdb. Если AX не использует tempdb, тогда поясните почему при работе AX tempdb переполняется? у нас такое было. И почему при работе с AX, с использованием временных таблиц, в tempdb появляются некие временные таблицы с блокировками? Это происходит при работе алгоритмов не использующих прямой доступ к БД через операторы Statement.ExecuteQuery().
Старый 28.11.2007, 14:01   #9  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Таблицы с property temporary. Про временные таблицы понятно, что они не привязаны к SQL. А вот их обработка... в связи с таблицами не временными...или при заполнении.. может быть вызывает такой момент как изменения в tempdb. Я об этом и спрашиваю.
Старый 28.11.2007, 14:31   #10  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Всем спасибо! Извините за глупые вопросы.
Не АХ создает это все... а сам SQL для обработки эксклюзивных блокировок на таблице (как минимум) , и привязывает их к сессии пользователя AX:
Object LockType LockMode LockStatus RequestOwner Index ProcessID
ax db s grant sess inventtrans 71
tempdb ext x grant xact #snapshot_lockinfo 71
Старый 28.11.2007, 14:32   #11  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от ansoft Посмотреть сообщение
...или при заполнении..
Да
Цитата:
Сообщение от ansoft Посмотреть сообщение
может быть вызывает такой момент как изменения в tempdb.
нет
Старый 29.11.2007, 15:39   #12  
EAlex is offline
EAlex
Участник
 
27 / 14 (1) ++
Регистрация: 30.01.2004
А каким образом можно уменьшить размер tempDb?
Старый 29.11.2007, 15:57   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
не могу удержаться от ссылки на аксаптапедию
Temporary tables — Axaptapedia
Старый 29.11.2007, 18:22   #14  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от EAlex Посмотреть сообщение
А каким образом можно уменьшить размер tempDb?
Из Аxapta никак. А так надо смотреть @@version. Если применяете оптимистическую модель, то это нормальное дело
Старый 19.04.2013, 15:38   #15  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Всем доброго времени суток! Подниму тему.

При объёмах, бОльших, чем 128 Кб временные таблицы скидываются на жёсткий диск. Если раскрытие производится на сервере, то, соответсвенно, такой файл, создаётся на сервере. Если обрабатываются большие объёмы данных, то в определённый момент система выдаёт ошибку:
"Ошибка Windows: = Код ошибки: 50110 = Превышен максимальный размер файла. Операция будет прекращена."

Подскажите пожалуйста где можно посмотреть/отрегулировать это ограничение? Спасибо!

DAX 2009
Старый 19.04.2013, 16:32   #16  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Превышен максимальный размер файла
За это сообщение автора поблагодарили: Cardagant (1).
Старый 21.04.2013, 14:27   #17  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
А в DAX 2012 всё осталось так же?
Старый 21.04.2013, 15:07   #18  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
А разве есть какие-то варианты? Временные таблицы и предназначены для того, чтобы использовать память. Поправьте, если я ошибаюсь.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 21.04.2013, 15:47   #19  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В DAX2012 дополнительно к имеющимся временным таблицам, хранящимся в оперативной памяти (InMemory), добавили временные таблицы уровня БД (TempDB).

http://msdn.microsoft.com/en-us/library/gg863308.aspx
За это сообщение автора поблагодарили: Pustik (2).
Старый 21.04.2013, 20:37   #20  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
В DAX2012 дополнительно к имеющимся временным таблицам, хранящимся в оперативной памяти (InMemory), добавили временные таблицы уровня БД (TempDB).

http://msdn.microsoft.com/en-us/library/gg863308.aspx
Интересно будет посмотреть на скорость. Многие алгоритмы от этого зависят. Здесь была очень интересная тема.
Временные таблицы и скорость работы
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Теги
tempdb, временная таблица

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Порядок выполнения GroupBy и Exists Join для временных таблиц S.Kuskov DAX: Программирование 6 06.12.2012 16:55
Передача нескольких временных таблиц в отчет Pegiy DAX: Программирование 5 03.06.2004 17:44
Использование временных таблиц Dubinski Serguei DAX: Программирование 23 13.12.2003 10:13
Дополнительные возможности временных таблиц: метод setTmpData vitk DAX: База знаний и проекты 1 19.06.2002 17:53
Использование временных таблиц в отчетах Alexey DAX: База знаний и проекты 1 28.05.2002 11:15
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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