oracle索引的storage,Oracle 12c In Memeory新特性 Storage index

Oracle 12c In Memeory新特性 Storage index

Storage index(下文简称SI),是在exadata平台上的一个特性,通过在内存中维护一块存储区域的最大和最小值.

在扫描时可以下推到cell来执行,从而减少了需要IO的次数,在in memory特性中,每个in memory compress unit也维

护了一个最大值和最小值,这样在在扫描时,可以直接根据最大值和最小值跳过某些不需要的IMCU.

创建一个表,并设置IM属性

SQL> create table t_si inmemory as select 10 id from dual connect by level<1000000;

Table created.

Insert一个和其他的值不一样的数值

SQL> insert into t_si values(11);

1 row created.

SQL> commit;

查看当前的IMCU的状态

SQL> select objd,imcu_addr from v$im_header;

OBJD IMCU_ADDR

---------- ----------------

91799 00000000604FFFE8

91799 0000000061400000

SQL> select objd,head_piece_address,utl_raw.cast_to_number(minimum_value),utl_raw.cast_to_number(t.MAXIMUM_VALUE)

from v$im_col_cu t

2  ;

OBJD HEAD_PIECE_ADDRE UTL_RAW.CAST_TO_NUMBER(MINIMUM_VALUE)

---------- ---------------- -------------------------------------

UTL_RAW.CAST_TO_NUMBER(T.MAXIMUM_VALUE)

---------------------------------------

91799 00000000604FFFE8           10

10

91799 0000000061400000           10

10

91799 0000000061500000           11

11

通过查询v$im_col_cu得到当前有三个IMCU,并且可以看出当前的每个IMCU的最大值和最小值.

比如该查询;

SQL> select count(id) from t_si where id>10;

COUNT(ID)

----------

1

................

IM scan CUs pruned                 2

................

由于大于10的IMCU只有1个,因此通过查询v$sesstat可以看到,总共3个IMCU,有2个IMCU被pruned了,

此需扫描1个IMCU即可

再看这个例子

SQL>select count(id) from t_si where id=10

...............

IM scan CUs pruned             ,          1

.................

等于10的IMCU有2个,因此通过查询v$sesstat可以看到,总共3个IMCU,有1个IMCU被pruned了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值