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,那么认在内存列存储才会继续在内存中。

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...