为什么即使在扫描后,TABLE 也没有填充在 V$IM_SEGMENTS 中



所以我在内存中添加了一个表,然后扫描了该表。但它仍然没有出现在 V$IM_SEGMENTS 中。在"解释计划"中,它显示"内存访问已满"。所以不确定它是否正在使用列存储。

这些是不是:

更改表内存;从 ;

从 V$IM_SEGMENTS 中选择 *;

无行

首先inmemory_size应该在 100M 左右。以下命令应显示参数inmemory_size的适当大小值:

show parameter inmemory_size

当对表进行完全扫描或内存优先级子句不是none时,将表段加载到内存区域中会启动,因此我们需要确保您所做的选择查询经过table access full路径。因此,启动全表扫描的另一种方法是执行 select count(*) from table

或者,您可以使用包populate过程手动将表加载到内存区域中dbms_inmemory

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

exec dbms_inmemory.populate('INMEM_USER','T1');

关于查询v$im_segments,这里要考虑的另一件事是; bytes_not_populatedpopulate_status列也要查询正确性。当v$im_segments返回行时,应0 bytes_not_populatedpopulate_statusCOMPLETED

有关内存填充的更多信息可以在这里找到

相关内容

  • 没有找到相关文章

最新更新