当前位置: 首页 > news >正文

Oracle 12c新特性 In-Memory Column Store

Oracle 12c引入了一项重要的特性——In-Memory Column Store(简称IM或In-Memory),这一特性极大地提升了数据库在处理分析型查询时的性能。以下是关于Oracle 12c In-Memory特性的详细介绍:

一、基本概念

In-Memory Column Store:Oracle 12c开始,在SGA(System Global Area,系统全局区)中新增加了一个静态的内存区域,用于存放以列式存储的用户表。这一特性使得数据库能够更高效地处理大量数据的查询操作,特别是当查询只涉及表中的部分列时。

二、主要优点

  1. 性能提升:列式存储允许数据库在查询时只访问需要的数据列,从而避免了不必要的I/O操作。此外,每一列的列值本身就构成了索引,这进一步提高了查询效率。
  2. 资源优化:IM特性并不会替换传统的Buffer Cache行式存储,而是作为补充存在。Oracle优化器会根据查询的具体情况和两种存储方式的特点,自动选择最合适的存储方式来获取数据。
  3. 数据压缩:IM可以对存入的表进行压缩,以减少内存使用并提高查询性能。压缩级别可以根据需要进行调整,从NO MEMCOMPRESS到MEMCOMPRESS FOR CAPACITY HIGH,以满足不同的性能需求。

三、实现方式

  1. 参数设置:IM特性由inmemory_size参数控制,只要该参数值大于0,IM特性即被开启。需要注意的是,inmemory_size的值不能小于100MB,否则数据库将无法启动并报错ORA-64353。
SYS@orcl> alter system set inmemory_size=64M scope=spfile;SYS@orcl> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.SYS@orcl> startup
ORA-64353: in-memory area size cannot be less than 100MB

示例SQL命令(设置inmemory_size为1GB):

SYS@orcl> ALTER SYSTEM SET INMEMORY_SIZE = 1G SCOPE=SPFILE;

重启数据库后,SGA中将会多出一个IN-Memory Area,表明IM特性已被打开。

  1. 表指定:通过ALTER TABLE命令,可以将特定的表或表分区加入到IM中。Oracle并不会立即将表数据加载到IM中,而是会在后续的查询操作中触发加载过程。

    示例SQL命令(将表加入到IM中):

SYS@orcl>  ALTER TABLE t_employees INMEMORY;

如果需要从IM中移除表,可以使用NO INMEMORY选项。

 SYS@orcl>  ALTER TABLE t_employees NO INMEMORY;
  1. 视图监控:Oracle提供了多个视图来监控IM的使用情况,包括V$INMEMORY_AREAV$IM_SEGMENTSV$IM_COLUMN_LEVEL等。这些视图可以帮助DBA了解IM区域的使用情况、IM中存放的表和字段信息等。

四、应用场景

IM特性特别适用于以查询为主的OLAP(在线分析处理)应用,这些应用通常需要对大量数据进行复杂的查询操作。通过将频繁查询的表或表分区加入到IM中,可以显著提高查询性能,减少查询响应时间。

五、RAC环境需要注意这两个参数

alter system set parallel_force_local=FALSE sid='*';alter system set parallel_degree_policy=AUTO sid='*';

通过测试证明,在RAC集群环境下,如果要使用 IN MEMORY特性,需要设置
parallel_force_local=FALSE 和 parallel_degree_policy=AUTO之后才能真正意义上的启动IN MEMORY特性,不然只是执行计划中的启用,可能是假象。

六、注意事项

  1. 内存资源:IM特性需要占用额外的内存资源,因此在开启该特性之前,需要确保服务器有足够的内存来支持IM区域的大小。
  2. 性能评估:在将表加入到IM之前,建议对表进行性能评估,以确定是否真正需要IM来提升查询性能。
  3. 定期维护:IM特性需要定期维护,包括监控IM区域的使用情况、优化IM中存放的表、删除不再需要的表等。

综上所述,Oracle 12c的In-Memory Column Store特性是一项强大的功能,它能够在不改变现有应用程序和数据库架构的情况下,显著提升数据库的查询性能。然而,为了充分发挥IM特性的优势,需要对其进行合理的配置和定期的维护。

http://www.lryc.cn/news/404322.html

相关文章:

  • 【数据结构】二叉树———Lesson2
  • mongodb数据导出与导入
  • 电路学习——经典运放电路之滞回比较器(施密特触发器)(2024.07.18)
  • NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker)
  • JavaWeb day01-HTML入门
  • 驱动框架——CMSIS第一部分 RTE驱动框架介绍
  • Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器
  • 保障信息系统安全保护等级调整期间的安全性
  • 实战:shell编程之全量命令练习
  • 在 CentOS 7 上编译安装 Python 3.11
  • Qt 4.8.7 + MSVC 中文乱码问题深入分析
  • IDEA的常见代码模板的使用
  • arcgis怎么选取某个指定区域地方的数据,比如从全国乡镇数据选取长沙市乡镇数据
  • 二、链表(1)
  • KAFKA搭建教程
  • Linux网络——套接字与UdpServer
  • SpringBoot源码深度解析
  • 【Qt】常用控件
  • electron 主进程和渲染进程通信
  • 【ARM】MDK-解决CMSIS_DAP.DLL missing报错
  • CSS 的环境变量函数env()
  • 数学建模--国赛备赛---TOPSIS算法
  • 均值滤波算法及实现
  • 【Apache Doris】周FAQ集锦:第 16 期
  • 单例模式_Golang
  • 代码随想录 day 18 二叉树
  • 降雨量预测 | Matlab基于ARIMA-RBF降雨量预测
  • 包含示例和模板的流程文档指南
  • 51单片机嵌入式开发:15、STC89C52RC操作蜂鸣器实现一个music音乐播放器的音乐盒
  • B树(B-Tree)数据结构