Proces IMCO (Inmemory Coordinator) se probudí každé dvě minuty a zkontroluje, zda je třeba dokončit nějaké populační úkoly. Dotazování tabulky ihned po jejím povolení pro inmemory tedy nezajistí, že dotaz bude obsluhován z inmemory.
Objekty jsou zaplněny do úložiště sloupců IM buď v seznamu s prioritou ihned po otevření databáze nebo po prvním naskenování (dotazování) tabulek.
Pokud například povolíme tabulku tab1, tab2, tab3 pro inmemory:
alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;
Tyto tabulky se dostanou do paměti, když:
- Proces IMCO vyzvedne tyto tabulky a načte je do oblasti paměti (v pořadí od nejvyšší priority po nejnižší:tab2, tab3 a tab1)
- Pokud provedeme výběrový dotaz na kteroukoli z tabulek (příklad:
select * from tab1
) před zahájením procesu IMCO (každé 2 minuty)
Chcete-li zjistit, zda je tabulka/oddíl zcela načten do paměti, můžete zadat dotaz v$im_segments
zobrazit jako následující:
select owner, segment_name, partition_name, segment_type, bytes,
bytes_not_populated, populate_status from v$im_segments;
Takže, abych odpověděl na vaši otázku:
- Zajistěte, aby se tabulka načetla do paměti dotazem
v$im_segments
- Pokud se tabulka nenačte, proveďte výběrový dotaz, aby se načetla do oblasti paměti.
- Získejte plán dotazů pro výběrový dotaz na stole, měl by zobrazovat INMEMORY jako součást plánu
Podívejte se na tento whitepaper pro více podrobností.