sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo recopilar datos de la partición INMEMORY?

El proceso IMCO (Coordinador de memoria) despierta cada dos minutos y verifica si es necesario completar alguna tarea de población. Por lo tanto, consultar una tabla inmediatamente después de habilitarla para inmemory no garantiza que la consulta se atienda desde inmemory.

Los objetos se llenan en el almacén de columnas IM, ya sea en una lista priorizada inmediatamente después de que se abre la base de datos o después de que las tablas se escanean (consultan) por primera vez.

Por ejemplo, si habilitamos la tabla tab1, tab2, tab3 para inmemory:

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

Estas tablas entran en memoria cuando:

  1. El proceso IMCO toma estas tablas y las carga en el área de memoria (en orden de prioridad, de mayor a menor:tab2, tab3 y tab1)
  2. Si realizamos una consulta de selección en cualquiera de las tablas (ejemplo:select * from tab1 ) antes de que se inicie el proceso IMCO (cada 2 minutos)

Para saber si una tabla/partición está completamente cargada en la memoria, puede consultar v$im_segments vista como la siguiente:

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

Entonces, para responder a tu pregunta:

  1. Asegúrese de que la tabla esté cargada en memoria consultando v$im_segments
  2. Si la tabla no está cargada, realice una consulta de selección en ella para que se cargue en el área de memoria
  3. Obtenga un plan de consulta para la consulta seleccionada en la tabla, debe mostrar INMEMORY como parte del plan

Consulte este documento técnico para más detalles.