因此,我在内存中添加了一个表,并在此后对其进行了扫描。但是它仍然没有出现在V $ IM_SEGMENTS中。在“说明计划”中,它显示“内存访问已满”。因此不确定是否正在使用列存储。
这些:
更改表的内存; SELECT * FROM;
SELECT * FROM V $ IM_SEGMENTS;
无行
答案 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_segments
和bytes_not_populated
列的正确性。
populate_status
返回行时,v$im_segments
应该是bytes_not_populated
,而0
应该是populate_status
。
有关内存不足的更多信息,请参见here