【Oracle】Oracle 12c DB In-Memory入门实验手册(二)

(二)加载数据到IM column store

在实验手册(一)中介绍了IM的基础操作,objects如何开启IM column store

链接:http://blog.csdn.net/badly9/article/details/49746825

 

虽然在之前的操作中我们对objects开启了IM column store,但是这些objects仍然没有被加载到IM column store中。默认情况下,Oracle会自主决定什么时候将表加载如IM中。或者我们可以通过执行DBMS_INMEMORY包来手动加载objectsIM中。

通过设置sub-clause PRIORITY可以自动加载objectsIM中。

 

2.1 通过查询objects来加载数据到IM

默认情况下,Oracle在第一次访问objects之后加载该objectsIM中(比如全表扫描)。如果一个object开启了IM并且被查询之后,而且如果查询需要的数据并没有被加载到IM,数据库会通过后台进程异步的从buffer cachedisk中加载需要的数据到IM中,在数据逐步加载到IM中之后,之后的查询就会可以使用IM

IM通过后台一组worker processes加载数据。每个worker process负责加载该objects的一部分。加载使用的是流机制,同时负责将数据的分列和压缩。在这个过程中,数据库正常运行。

就如一个表空间在硬盘上被分为多个extentIM也被分成多个In-Memory Compression UnitsIMCUs)。每个worker process会被分配自己的IMCU,加载objects的子集到IMCU中。数据在被加载到IMCU的过程中不会进行任何的分类和排序。加载数据的顺序和数据行实际存储的顺序相同。IMCU的大小和数量由系统内部算法决定。

通过视图V$IM_SEGMENTSV$IM_USER_SEGMENTS能够查看objects是否被加载到IM中以及加载状态。如果segment仅仅设置了IM相关属性而没有被加载,则在这两个视图中并不会有与该segment对应的数据。

 

实验过程如下:

1.将sales表开启IM

SQL> ALTER TABLE SALES INMEMORY;

 

Table altered.

2.查询数据字典来确认表是否开启IM

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'SALES';

 

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

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

ENABLED  NONE     FOR QUERY LOW     AUTO            NO DUPLICATE

3.查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值