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.mzph.cn/diannao/48700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.Fabric框架

要了解Fabric,首先要知道Hyperledger开源项目。 2015年12月,由开源世界的旗舰组织Linux基金会牵头,30家初始企业成员共同宣布Hyperledger联合项目成立。Hyperledger 超级账本,是首个面向企业应用场景的分布式账本平台&#xff0c…

【每日一练】python编写一个简易计算器

程序代码: #循环语句,条件为真所以循环执行 while True: #定义两个数的变量和运算符号 num1 float(input("第一个数:")) num2 float(input("第一个数:")) syminput("选择运算符 - * /:") #判断运算符号 …

防火墙的经典体系结构及其具体结构

防火墙的经典体系结构及其具体结构 防火墙是保护计算机网络安全的重要设备或软件,主要用于监控和控制进出网络流量,防止未经授权的访问。防火墙的经典体系结构主要包括包过滤防火墙、状态检测防火墙、代理防火墙和下一代防火墙(NGFW&#xf…

Camera Raw:评级和标签

在 Camera Raw 中,评级 Rating和标签 Label功能为摄影师和图像编辑者提供了一种高效的图像组织和管理方法。通过这些功能,用户可以轻松地对照片进行分类、标记和筛选,以便在大量图像中快速找到需要的照片。 ◆ ◆ ◆ 设置星级 Set Rating 星…

Inconsistent Query Results Based on Output Fields Selection in Milvus Dashboard

题意:在Milvus仪表盘中基于输出字段选择的不一致查询结果 问题背景: Im experiencing an issue with the Milvus dashboard where the search results change based on the selected output fields. Im working on a RAG project using text data conv…

【Java面向对象】二进制I/O

文章目录 1.二进制文件2.二进制 I/O 类2.1 FileInputStream 和 FileOutputStream2.2 FilterInputStream和 FilterOutputStream2.3 DatalnputStream 和 DataOutputStream2.4 BufferedInputStream 和 BufferedOutputStream2.5 ObjectInputStream 和 ObjectOutputStream 2.6 Seria…

防御保护课-防火墙接口配置实验

一、实验拓扑 (我做实验用的图如下) 二、实验要求 1.防火墙向下使用子接口分别对应生产区和办公区 2.所有分区设备可以ping通网关 三、实验思路 配IP; 划分vlan并配置vlan; 配置路由和安全策略。 四、实验配置 1、画图并…

开源模型应用落地-FastAPI-助力模型交互-进阶篇-RequestDataclasses(三)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。 在数据验证和转换方面,高级用法提供了更精细和准确的控制&#…

【Linux】进程间通信之-- 共享内存与信号量的介绍(下)

前言 上一篇,我们由进程间通信,引入并讲述了管道、匿名管道和命名管道,本节,将继续学习进程间通信的另一种方式之,共享内存。还要学习几个系统调用接口,并演示两个进程通过共享内存来进行通信。。。 目录 1…

解决Element UI 表格组件懒加载数据刷新问题

一、问题描述 element ui的table组件设置成懒加载时,遇到数据表格需要更新、删除等操作,子节点不会自动更新。 二、解决思路 刷新数据,就是重新调用load(),通过map记录已展开的节点,需要刷新…

工业控制:CANOpen(控制器局域网络)协议快速学习

文章目录 背景协议介绍CAN总线协议CANOpen协议介绍CANOpen诞生背景CANOpen的对象字典 CANOpen的服务数据对象(SDO) 参考附录问题CAN总线竞争原理在CAN协议中,帧中的ID是发送者的ID还是接收者的ID? 背景 目前很多CANOpen介绍的文章…

循环机制(event loop)之宏任务和微任务

一、前言 js任务分为同步任务和异步任务,异步任务又分为宏任务和微任务,其中异步任务属于耗时的任务。 二、宏任务和微任务有哪些? 宏任务:整体代码script、setTimeout、setInterval、setImmediate(Node.js&#xff…

【ARM】SMMU系统虚拟化整理

目录 1.MMU的基本介绍 1.1 特点梳理 2.功能 DVM interface PTW interface 2.1 操作流程 2.1.1 StreamID 2.1.2 安全状态: 2.1.3 HUM 2.1.4 可配置的操作特性 Outstanding transactions per TBU QoS 仲裁 2.2 Cache结构 2.2.1 Micro TLB 2.2.2 Macro…

第四周:机器学习笔记

第四周学习周报 摘要Abstract机器学习任务攻略1.loss on training data1.1 training data的loss过大怎么办?1.2 training data的loss小,但是testing data loss大怎么办? 2. 如何选择一个中最好的模型?2.1 Cross Validation&#x…

知名在线市场 Etsy 允许在其平台上销售 AI 艺术品,但有条件限制|TodayAI

近日,以手工和复古商品著称的在线市场 Etsy 宣布,将允许在其平台上销售 AI 生成的艺术品。这一举措引发了广泛关注和争议。尽管 Etsy 正在接受 AI 艺术的潮流,但平台对这一类商品的销售设置了一些限制。 根据 Etsy 新发布的政策,…

mysql存储引擎和备份

索引 事务 存储引擎 概念:存储引擎,就是一种数据库存储数据的机制,索引的技巧,锁定水平。 存储引擎。存储的方式和存储的格式。 存储引擎也属于mysql当中的组件,实际上操作的,执行的就是数据的读写I/O。…

Framework源码面试之Handler面试集合

常面问题 1.Handler怎么在主线程和子线程进行数据交互的原理? 主线程和子线程通过handler交互,交互的载体是通过Message这个对象,实际上我们在子线程发送的所有消息,都会加入到主线程的消息队列中,然后主线程分发这些…

华为OD机试2024年C卷D卷 - 构成指定长度字符串的个数/字符串拼接(Java)

华为OD机试&#xff08;C卷D卷&#xff09;2024真题目录 题目描述&#xff1a;构成指定长度字符串的个数 (本题分值200) 给定 M&#xff08;0 < M ≤ 30&#xff09;个字符&#xff08;a-z&#xff09;&#xff0c;从中取出任意字符&#xff08;每个字符只能用一次&#x…

科普文:银行信贷系统概叙

信贷业务流程 资金需求者提交申请&#xff1a;资金需求者通过不同渠道&#xff08;如APP、网站、门店等&#xff09;提交贷款申请。 系统交互完成审批&#xff1a;系统通过自动化和人工相结合的方式&#xff0c;对贷款申请进行初步筛选和审批。 系统交互完成策略判断&#xf…

PyQt5 自定义控件详细教程

PyQt5 自定义控件详细教程 在 PyQt5 中&#xff0c;创建自定义控件是实现特定功能和界面定制的重要手段。本教程将详细介绍如何创建自定义控件&#xff0c;包括继承现有的控件类并重写方法来实现特定功能。我们将通过丰富的案例来展示如何实现这些功能。 继承QWidget创建自定…