Oracle and in memory tables.

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Vovchik
Маньяк
Сообщения: 2841
Зарегистрирован: 20 фев 2003, 09:15
Откуда: Vancouver

Oracle and in memory tables.

Сообщение Vovchik »

А вот скажите ка мне Ораклисты (и примазавшиеся), мона ли в Оракле 9 сделать такое:

создать таблицу в памяти. Значит что бы была таблица в которую мона вставлять, удалять и прочая - с помощью Сикуеля. ТОка вот таблица это должна быть в памяти, чтоб ввод вывод на диск не происходил. Ежели после коммита роллбэка таблица стухнет - это покатит. В общем - in memory table.

Искал, читал - не нашел. Нежто нельзя?
Аватара пользователя
Marmot
Графоман
Сообщения: 39279
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

Есть вот это: http://download-west.oracle.com/docs/cd ... #sthref759
только смнительно что оно на диск не пишет...
Vovchik
Маньяк
Сообщения: 2841
Зарегистрирован: 20 фев 2003, 09:15
Откуда: Vancouver

Сообщение Vovchik »

Marmot писал(а):Есть вот это: http://download-west.oracle.com/docs/cd ... #sthref759
только смнительно что оно на диск не пишет...
Temporary tables? Есть маза что оно на диск пишет. DDL же сохраняется, оно тока данные стирает в конце трансакции или там сессии. То есть ежели в конце трансакции - то блоки данных и не пишет но лог запишет.
А ежели по сессии - то тама запросто чек пойнт могет случиться и запись прям в таблицу пройзойдет.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

CREATE GLOBAL TEMPORARY TABLE MY_TABLE (...) CACHE;


без гарантий что в памяти
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

Или так:

Код: Выделить всё

CREATE OR REPLACE TYPE my_type AS
       OBJECT(
                  a     NUMBER,
                  b     VARCHAR2(10),
                  c     NUMBER);

CREATE OR REPLACE TYPE my_tbl_type AS TABLE OF my_type;

CREATE OR REPLACE FUNCTION test_function return my_tbl_type pipelined is
        vRes my_type := my_type(NULL,NULL,NULL);
    begin
        for... loop
           vRes.a:=...;
           vRes.b:=...;
           vRes.c:=...;
           pipe row(vRes);
        end loop;
        return;
    end;


select * from table(test_function());

MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: Oracle and in memory tables.

Сообщение MarkM »

Vovchik писал(а):А вот скажите ка мне Ораклисты (и примазавшиеся), мона ли в Оракле 9 сделать такое:

создать таблицу в памяти. Значит что бы была таблица в которую мона вставлять, удалять и прочая - с помощью Сикуеля. ТОка вот таблица это должна быть в памяти, чтоб ввод вывод на диск не происходил. Ежели после коммита роллбэка таблица стухнет - это покатит. В общем - in memory table.

Искал, читал - не нашел. Нежто нельзя?
[trn]est' PLSQL kollekzii. No po nim nel'zja SQL delat'. Chto est' bol'shoj saks. Esli ne principial'no, to ispol'zuj
[/trn] GLOBAL TEMPORARY TABLES. [trn] odin her v keshe budut sidet' nekotoroe vremja.[/trn]
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

дополнение

Коллекцию описать в пакете, хитромудрый select оформить во view и понавесить на нее instead of триггеры, я так делал псевдотаблицу, хранящую
настройки окон для конкретного пользователя (со сбросом в реальную таблицу на выходе).

Вообще говоря при создании таблицы можно указать

Код: Выделить всё

CACHE  
 for data that will be accessed frequently, specifies that the blocks retrieved for
this table are placed at the most recently used end of the LRU list in the buffer 
cache when a full table scan is performed. This clause is useful for small lookup 
tables.  
 
 As a parameter in the LOB_storage_clause, CACHE specifies that Oracle 
preallocates and retains LOB data values in memory for faster access. 

Restriction: You cannot specify CACHE for an index-organized table.
 
Только нужно очень четко себе представлять, к чему ведут подобные действия и в какой области памяти будет храниться эта таблица.
Ответить