oracle 12c (内存列存储)IM column store

前端之家收集整理的这篇文章主要介绍了oracle 12c (内存列存储)IM column store前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
oracle 12c (内存列存储)IM column store

1.关于内存列存储的说明
1)内存列存储是SGA里的一个静态的池。以列为单位的方存储元数据。不替代buffer pool,只是其的补充。
因此oracle可以存储列或行的方式存储元数据在内存里。


2)列存储的数据可以压缩,且SQL查询语句直接访问压缩数据


3)当你想把对象放到列存储里时,可以控制对象的优先级。


4)支持的版本为12.1.0.2或更高的兼容性


2.你能够在如下几种级别中打开内存存储
1)列(column)
2)表(tables)
3)物化视图(materialized view)
4)表空间(tablespace)
5)分区(partition)


3.内存列存储可以改善以下操作
1)多行查询且带有= < > 与IN的过滤符号的查询语句
2)查询少量字段但有较多字段的表或物化视图的语句,例如查询某个字段有100表中的5列。
3)小表连接大表的查询语句
4)聚合数据的查询语句


4.你能用以下语句实现数据库对象放到类存储中
CREATE TABLE
ALTER TABLE
CREATE TABLESPACE
ALTER TABLESPACE
CREATE MATERIALIZED VIEW
ALTER MATERIALIZED VIEW


5.查看那些对象呗放入到了列存储中
SELECT OWNER,SEGMENT_NAME,INMEMORY_PRIORITY,INMEMORY_COMPRESSION
 FROM V$IM_SEGMENTS;

6.内存列存储不能改善以下类型的操作
1)复杂谓词的查询语句
2)查询较多列的语句
3)返回较多行结果的查询语句
4)连接多个大表的查询语句
5)数据库里sys用户的对象以及SYSTEM,SYSAUX表空间里的对象都不支持列存储


7.列存储的优先级
PRIORITY NONE-->LOW-->MEDIUM-->HIGH-->CRITICAL


优先级只针对于表级或表分区级;如果对象是64k或更小,虽然手动放入了列存储,但是内存列存储没有把其放入列存储中。


8.开启内存列存储的参数
默认情况下只需要配置INMEMORY_SIZE,因为其他参数默认就好。
alter system set INMEMORY_SIZE=100M scope=spfile; --重启生效

9.实例
表级的操作
例如:
CREATE TABLE test_inmem (
  id    NUMBER(5) PRIMARY KEY,test_col VARCHAR2(15))
 INMEMORY;

ALTER TABLE oe.product_information INMEMORY;


ALTER TABLE oe.product_information INMEMORY MEMCOMPRESS FOR CAPACITY LOW;


ALTER TABLE oe.product_information INMEMORY
 MEMCOMPRESS FOR CAPACITY HIGH
 PRIORITY LOW;


ALTER TABLE oe.product_information 
 INMEMORY MEMCOMPRESS FOR QUERY (
   product_id,product_name,category_id,supplier_id,min_price)
 INMEMORY MEMCOMPRESS FOR CAPACITY HIGH (
   product_description,warranty_period,product_status,list_price)
 NO INMEMORY (
   weight_class,catalog_url);
 
表空间级的操作
CREATE TABLESPACE tbs1
 DATAFILE 'tbs1.dbf' SIZE 40M
 ONLINE
 DEFAULT INMEMORY;


ALTER TABLESPACE tbs1 DEFAULT INMEMORY
 MEMCOMPRESS FOR CAPACITY HIGH
 PRIORITY LOW;


物化视图级的操作

CREATE MATERIALIZED VIEW oe.prod_info_mv INMEMORY
 AS SELECT * FROM oe.product_information;


ALTER MATERIALIZED VIEW oe.prod_info_mv INMEMORY PRIORITY HIGH;


10 数据泵对于内存列存储的表的导出
导入的时候需要TRANSFORM=INMEMORY:y,那么默认在内存列存储才会继续在内存中。

猜你在找的Oracle相关文章