温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

in-memory

发布时间:2020-08-09 23:22:53 来源:ITPUB博客 阅读:126 作者:哎呀我的天呐 栏目:关系型数据库

Oracle 12c in memory选件通过在SGA中分配独立的内存区域(In Memory Area),对数据使用列式压缩存储来提高查询性能.

In Memory区的大小由参数inmemory_size控制, 是动态参数.

In Memory内存区可分为两个子池,分别为1M pool和64K pool. 1M pool用于存储列式数据. 64K pool用于存储对象的元数据(metadata)和事务日志(transaction journal). 1M pool 中分配的内存块的大小为1M的整数倍,64K pool中分配的内存块大小均为64K。

v$inmemory_area视图有每个pool大小的详细信息:

点击( 此处 )折叠或打开

  1. SQL > select pool , ALLOC_BYTES / 1024 k , used_bytes , POPULATE_STATUS , con_id from v$inmemory_area ;


  2. POOL                          K   USED_BYTES POPULATE_STATUS        CON_ID

  3. ---------------------- ---------- ---------- ---------------- ----------

  4. 1MB POOL                 37711872             0 DONE                     3

  5. 64KB POOL                 8633024             0 DONE                     3


  6. Elapsed : 00 : 00 : 00 . 00

SQL> alter table testim inmemory; 当执行设置table为inmemory属性时,并不会在inmemory 内存中分配空间,执行查询加载数据之后才会有。

in-memory
相对于磁盘或者闪存,内存资源毕竟成本更高,更为有限,所以需要将有限的资源分配给更需要的对象. Oracle新增了一个INMEMORY属性用于控制对象是否会被装载到In Memory区, 该属性可以定义在表 空间,表,分区甚至列级. Oracle In Memory白皮书中给出了一些设置对象IMMEMORY属性的具体用例, 摘录于此, 以备将来参考:

alter tablespace testim default inmemory;
alter table test inmemory no inmemory(prod_id);
alter table test modify partition test_Q1_1998 no inmemory;

alter table test inmemory memcompress for query low;  --默认

此外,为了控制对象的装载顺序,Oracle定义了5种优先级来实现精细控制,通过priority子句来选择.详细信息如下:

  1* select SEGMENT_NAME,INMEMORY_SIZE,BYTES,POPULATE_STATUS from v$im_segments SEGMENT_NAME INMEMORY_SIZE     BYTES POPULATE_STAT
---------------------------------------- ------------- ---------- -------------
TEST               14090240 99426304   COMPLETED
TESTIM        4653514752  4.6440E+10 COMPLETED

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI