Процесс IMCO (Inmemory Coordinator) просыпается every two minutes и проверяет, должны ли выполняться какие-либо задачи по населению. Таким образом, запрос таблицы сразу после включения ее для inmemory не гарантирует, что запрос будет обслуживаться из inmemory.
Объекты заполняются в хранилище столбцов IM либо в списке приоритетов сразу после открытия базы данных, либо после того, как таблицы будут отсканированы (запрошены) в первый раз.
Например, если мы включим таблицы TAB1, TAB2, TAB3 для InMemory:
alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;
Эти таблицы попадают в InMemory, когда:
- процесс ММКО поднимает эти таблицы и загружает их в InMemory область (в порядке приоритета от наивысшего до самого низкого значения: tab2, tab3 и tab1)
- Если мы выполним выбор запроса по любой из таблиц (пример:
select * from tab1
) до того, как начнется процесс IMCO (в канун чень 2 минуты)
Чтобы знать, если таблица/раздел загружается полностью в InMemory вы можете запросить v$im_segments
вид, как следующее:
select owner, segment_name, partition_name, segment_type, bytes,
bytes_not_populated, populate_status from v$im_segments;
Таким образом, чтобы ответить на ваш вопрос:
- Убедитесь, что таблица загружена в inmemory, запросив
v$im_segments
- Если таблица не загружена, выполните запрос на нее, чтобы сделать ее загружается в InMemory области
- план Get запроса для выбора запроса на столе, он должен показать InMemory как часть плана
Проверьте это whitepaper для более подробной информации.