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列没有加载

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

