sql >> Database teknologi >  >> RDS >> Oracle

Hvordan indsamler man data fra INMEMORY-partitionen?

IMCO(Inmemory Coordinator)-processen vækker hvert andet minut og tjekker, om der skal udføres nogen befolkningsopgaver. Så at forespørge en tabel umiddelbart efter at have aktiveret den til inmemory, sikrer ikke, at forespørgslen serveres fra inmemory.

Objekter udfyldes i IM-kolonnelageret enten i en prioriteret liste umiddelbart efter, at databasen er åbnet, eller efter tabellerne er scannet (forespørges) for første gang.

For eksempel, hvis vi aktiverer tabel tab1, tab2, tab3 for inmemory:

alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;

Disse tabeller gemmes, når:

  1. IMCO-processen opfanger disse tabeller og indlæser dem i hukommelsesområdet (i prioriteret rækkefølge højest til lavest:tab2, tab3 og tab1)
  2. Hvis vi udfører valgforespørgsel på en af ​​tabellerne (eksempel:select * from tab1 ) før IMCO-processen starter (hvert andet minut)

For at vide, om en tabel/partition er indlæst fuldstændigt i hukommelsen, kan du forespørge v$im_segments se som følgende:

select owner, segment_name, partition_name, segment_type, bytes, 
bytes_not_populated, populate_status from v$im_segments;

Så for at besvare dit spørgsmål:

  1. Sørg for, at tabellen er indlæst i hukommelsen ved at forespørge v$im_segments
  2. Hvis tabellen ikke er indlæst, udfør valgforespørgsel på den for at få den indlæst i hukommelsesområdet
  3. Hent forespørgselsplan for den valgte forespørgsel på bordet, den skal vise INMEMORY som en del af planen

Tjek denne hvidbog for flere detaljer.




  1. MySQL ANTAL af flere venstre joinforbindelser - optimering

  2. Proceduren i oracle kører ikke

  3. Sådan fungerer Unicode() i SQLite

  4. Forebyggelse af SQL-injektion i Node.js