sql >> Databáze >  >> RDS >> Oracle

Jak sbírat data z oddílu INMEMORY?

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ž:

  1. 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)
  2. 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:

  1. Zajistěte, aby se tabulka načetla do paměti dotazem v$im_segments
  2. Pokud se tabulka nenačte, proveďte výběrový dotaz, aby se načetla do oblasti paměti.
  3. 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í.




  1. NOT IN v postgresql nefunguje

  2. Jak mohu převést klíšťata do formátu data?

  3. Vkládání řádků do tabulky pouze s jedním sloupcem IDENTITY

  4. Spring JDBC Nelze načíst třídu ovladače JDBC [oracle.jdbc.driver.OracleDriver]