为什么即使扫描后TABLE也不在V $ IM_SEGMENTS中流行?

时间:2019-07-08 13:41:09

标签: oracle12c in-memory-database in-memory in-memory-tables

因此,我在内存中添加了一个表,并在此后对其进行了扫描。但是它仍然没有出现在V $ IM_SEGMENTS中。在“说明计划”中,它显示“内存访问已满”。因此不确定是否正在使用列存储。

这些:

更改表的内存; SELECT * FROM;

SELECT * FROM V $ IM_SEGMENTS;

  

无行

1 个答案:

答案 0 :(得分:0)

inmemory_size开始应该在100M附近。 以下命令应显示参数inmemory_size的适当大小值:

show parameter inmemory_size

当对表进行全面扫描或者内存优先级子句不是none时,将表段加载到内存区域中开始,因此我们需要确保您完成的选择查询通过了{{1 }}路径。 因此,启动全表扫描的另一种方法是执行table access full

或者您可以使用select count(*) from table package中的populate过程将表手动加载到内存区域。

用法示例(对于用户inmem_user,表t1):

dbms_inmemory

与查询exec dbms_inmemory.populate('INMEM_USER','T1'); 有关的另一件事是;还需要查询v$im_segmentsbytes_not_populated列的正确性。 populate_status返回行时,v$im_segments应该是bytes_not_populated,而0应该是populate_status

有关内存不足的更多信息,请参见here