Oracle的内存列存储介绍

0    20    1

Tags:

👉 本文共约1369个字,系统预计阅读时间或需6分钟。

简介

关于内存列存储的说明

1)内存列存储是SGA里的一个静态的池。以列为单位的方存储元数据。因此oracle可以存储列或行的方式存储元数据在内存里。

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

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

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

能在如下几种级别中打开内存存储

1)列(column)

2)表(tables)

3)物化视图(materialized view)

4)表空间(tablespace)

5)分区(partition)

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

如果在表空间级别启用In-Memory Column Store,那么所有存储在该表空间中的所有表与物化视图将抽默认启用In-Memory Column Store。可以将一个数据库对象的所有列或者将一个数据库对象的部分列加载到In-Memory Column Store中。类似地,对于分区表或物化视图,可以将所有分区或部分分区加载到In-Memory Column Store中

能用以下语句实现数据库对象放到内存列存储中

CREATE TABLE

ALTER TABLE

CREATE TABLESPACE

ALTER TABLESPACE

CREATE MATERIALIZED VIEW

ALTER MATERIALIZED VIEW

查看那些对象被放入到了列存储中

列存储的优先级

PRIORITY NONE-->LOW-->MEDIUM-->HIGH-->CRITICAL

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

开启内存列存储的参数

默认情况下只需要配置INMEMORY_SIZE,其他参数默认就好。inmemory_size为0表示关闭,最小值100M。

通常情况下,sys用户下的对象及SYSTEM、SYSAUX表空间上的对象无法使用IMO特性,但通过设置“_enable_imc_sys”隐含参数也可以使用

优缺点

内存列存储可以改善以下操作

1)多行查询且带有= < > 与IN的过滤符号的查询语句

2)查询少量字段但有较多字段的表或物化视图的语句,例如查询某个字段有100表中的5列。

3)小表连接大表的查询语句

4)聚合数据的查询语句

内存列存储不能改善以下类型的操作

1)复杂谓词的查询语句

2)查询较多列的语句

3)返回较多行结果的查询语句

4)连接多个大表的查询语句

5)数据库里sys用户的对象以及SYSTEM,SYSAUX表空间里的对象都不支持列存储

示例

表级的操作

表空间级的操作

物化视图级的操作

数据泵对于内存列存储的表的导出

导入的时候需要TRANSFORM=INMEMORY:y,那么默认在内存列存储才会继续在内存中。

参考

https://blog.csdn.net/weixin_34805048/article/details/116360141

https://blog.csdn.net/gsforget321/article/details/105124375

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部