|
28.11.2007, 12:58 | #1 |
Участник
|
Расположение временных таблиц?
Добрый день всем!
Помогоите пожалуйста понять где AX располагает временные таблицы? На клиенте? На сервере приложений? В основной базе? В tempdb? Или по ситуации (может от объема данных) перемещает ее данные? С уважением, Андрей. |
|
28.11.2007, 13:02 | #2 |
Участник
|
Временные таблицы создаются в отдельных файлах на жестком диске на уровне сервера или клиента.
Размещение зависит от того, где была вставлена первая запись. То есть, если первую запись создали на стороне клиента, то там и файл будет. До 128 Кб временные таблицы храняться в памяти, а не на диске. |
|
28.11.2007, 13:14 | #3 |
Участник
|
Т.е. AX не анализирует объем данных вставляемых во временные таблицы для перемещения больших объемов в tempdb и все будет лить в файл? А запрос к временной таблице, если она связана с не временной AX будет клеить сам...?
|
|
28.11.2007, 13:16 | #4 |
Member
|
Ниже цитата из руководства разработчика до кучи. И посмотрите еще поиск по форуму, много раз уже обсуждалось.
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 |
Участник
|
Можете ответить дополнительно на такой вопрос: Для чего AX использует tempdb? для каких-то внутренних целей? В tempdb появляются блокировки привязанные к отдельным сессиям пользователей... причем в момент формирования отчетов на временных таблицах.
|
|
28.11.2007, 13:35 | #6 |
Member
|
Цитата:
Сообщение от ansoft
...
Для чего AX использует tempdb? ...
__________________
С уважением, glibs® |
|
28.11.2007, 13:42 | #7 |
MCT
|
Этого не может быть, если понимать что временные таблицы это таблицы с property temporary. Временная таблица это некая сущность хранимая в памяти или физическом файле, как отметил kashperuk, она никоим образом с хранением на sql не завязана. А вот выборка из реальных таблиц на sql для заполнения временной имеет место быть. Но почему происходят блокировки при этом это вопрос.
|
|
28.11.2007, 13:56 | #8 |
Участник
|
Речь идет именно о MSSQL и tempdb. Если AX не использует tempdb, тогда поясните почему при работе AX tempdb переполняется? у нас такое было. И почему при работе с AX, с использованием временных таблиц, в tempdb появляются некие временные таблицы с блокировками? Это происходит при работе алгоритмов не использующих прямой доступ к БД через операторы Statement.ExecuteQuery().
|
|
28.11.2007, 14:01 | #9 |
Участник
|
Таблицы с property temporary. Про временные таблицы понятно, что они не привязаны к SQL. А вот их обработка... в связи с таблицами не временными...или при заполнении.. может быть вызывает такой момент как изменения в tempdb. Я об этом и спрашиваю.
|
|
28.11.2007, 14:32 | #10 |
MCT
|
|
|
29.11.2007, 15:39 | #11 |
Участник
|
А каким образом можно уменьшить размер tempDb?
|
|
29.11.2007, 18:22 | #12 |
MCT
|
|
|
28.11.2007, 14:31 | #13 |
Участник
|
Всем спасибо! Извините за глупые вопросы.
Не АХ создает это все... а сам SQL для обработки эксклюзивных блокировок на таблице (как минимум) , и привязывает их к сессии пользователя AX: Object LockType LockMode LockStatus RequestOwner Index ProcessID ax db s grant sess inventtrans 71 tempdb ext x grant xact #snapshot_lockinfo 71 |
|
29.11.2007, 15:57 | #14 |
Участник
|
не могу удержаться от ссылки на аксаптапедию
Temporary tables — Axaptapedia |
|
19.04.2013, 15:38 | #15 |
Участник
|
Всем доброго времени суток! Подниму тему.
При объёмах, бОльших, чем 128 Кб временные таблицы скидываются на жёсткий диск. Если раскрытие производится на сервере, то, соответсвенно, такой файл, создаётся на сервере. Если обрабатываются большие объёмы данных, то в определённый момент система выдаёт ошибку: "Ошибка Windows: = Код ошибки: 50110 = Превышен максимальный размер файла. Операция будет прекращена." Подскажите пожалуйста где можно посмотреть/отрегулировать это ограничение? Спасибо! DAX 2009 |
|
19.04.2013, 16:32 | #16 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Cardagant (1). |
21.04.2013, 14:27 | #17 |
Участник
|
|
|
21.04.2013, 15:07 | #18 |
Участник
|
А разве есть какие-то варианты? Временные таблицы и предназначены для того, чтобы использовать память. Поправьте, если я ошибаюсь.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
21.04.2013, 15:47 | #19 |
Участник
|
В DAX2012 дополнительно к имеющимся временным таблицам, хранящимся в оперативной памяти (InMemory), добавили временные таблицы уровня БД (TempDB).
http://msdn.microsoft.com/en-us/library/gg863308.aspx |
|
|
За это сообщение автора поблагодарили: Pustik (2). |
21.04.2013, 20:37 | #20 |
Участник
|
Цитата:
Сообщение от S.Kuskov
В DAX2012 дополнительно к имеющимся временным таблицам, хранящимся в оперативной памяти (InMemory), добавили временные таблицы уровня БД (TempDB).
http://msdn.microsoft.com/en-us/library/gg863308.aspx Временные таблицы и скорость работы
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
Теги |
tempdb, временная таблица |
|
|