首页 > 数据库 > Oracle > In-memory不要全加载怎么做?
做两个从表结构到数据一模一样的表

开始查询表未以列式存储加载到内存中
USED_BYTES是0

执行一个命令把full表全部加载
alter table FULL inmemory;
然后观看执行计划已经识别到了(而且在 v$im_column_level 的数据字典中都看到5列全部识别)

但是其实并没有加载到内存(可以看到实际占用还是0)

需要触发一下。
比如执行一个select * from FULL;
可以看到USED_BYTES在不断变化。OPULATE_STATUS也在变化,直到加载完毕。我把这个过程记录了下来。
Oracle就是一定要触发一下。

执行一下,需要50毫秒就完成了。900万数据聚合。



full表执行count(*)和 sum(n)任意一列都可以用到列存计算

big表执行sum(n)可以用到列存计算而执行 sum(n)不可以,因为m列没有加载

查询数据字典也可以看到两者占内存大小不一样

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-3092825/ ,如需转载,请注明出处,否则将追究法律责任。