SQL> show parameter inmemory;
NAME TYPE VALUE------------------------------------ ----------- ------------------------------
inmemory_clause_default string
inmemory_force string DEFAULT
inmemory_max_populate_servers integer 0
inmemory_query string ENABLE
inmemory_size big integer 0
inmemory_trickle_repopulate_servers_ integer 1
percent
optimizer_inmemory_aware boolean TRUE
INMEMORY_SIZE定义了in-memory的大小,default为0MB,INMEMORY_FORCE,定义default的行为
default表示只在ddl定义下才会放到in-memory area中,off表示在关闭in-memory area。INMEMORY_CLAUSE_DEFAULT
定义了在新建表的时候,是否自动加入到in-memory area,压缩等属性.optimizer_inmemory_aware表示optimizer是否对
inmemory支持.
inmemory_size 是一个静态参数,更改需要重启实例生效.
提供给in memory并不需要有双倍内存,而是划分一块单独的内存区域给im-memeory功能使
用.这块内存区域是在存放在SGA之中,先称为in-memory area,in-memory 内存区域越大越好,这样有更多
数据存放在内存中,in-memory area可以由AMM或是ASMM来管理,实质是无非多了一块区域.
默认情况下对像只有在ddl定义才会被放到in-memory area区域中.可以通过inmemory_clause_default来修改
行为,比如手动把表放到in-memory area中
SQL> create table t1(a int,b int);
Table created.
SQL> alter table t1 inmemory;
Table altered.
取消表在inmemory中存放
SQL> alter table t1 no inmemory;
Table altered.
还可以在栏位级定义哪一栏放到 in-memory area中
SQL> alter table t1 inmemory;
Table altered.
SQL> alter table t1 inmemory (a) no inmemory (b);
Table altered.
先定义整个表存放在in memory中,才能再定义某个栏位存放在in memory中.
整张表放到in-memory里,除object_name之外
SQL> alter table c##frank.t1 no inmemory(object_name);
Table altered.
in-memory是列式存放,而传统的buffecache是行式存放,性能远低于列式存放。
in-memory特性的出现使得oracle的查询性能获得大幅度的提升。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30074459/viewspace-1375828/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30074459/viewspace-1375828/