当前位置: 首页 > 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特性的优势,需要对其进行合理的配置和定期的维护。

相关文章:

Oracle 12c新特性 In-Memory Column Store

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

【数据结构】二叉树———Lesson2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...

mongodb数据导出与导入

一、先去检查mongodump mongodump --version 如果报 mongodump version: built-without-version-string 或者其他的较老的版本,直接去下载最新的【传送门】 【以Ubuntu18.04为例】 安装工具 假设你下载的是 .tgz 文件(适用于 Linux 系统)&am…...

电路学习——经典运放电路之滞回比较器(施密特触发器)(2024.07.18)

参考链接1: 电子设计教程29:滞回比较器(施密特触发器) 参考链接2: 滞回比较器电路详细分析 参考链接3: 比较器精髓:施密特触发器,正反馈的妙用 参考链接4: 比较器反馈电阻选多大?理解滞后效应,轻…...

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker)

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker) 本文档详细介绍了在 Ubuntu Server 22.04 上使用 Docker 安装和配置 NVIDIA Container Toolkit 的过程。 概述 NVIDIA 容器工具包使用户能够构建和运行 GPU 加速容器。即可以在容器中使用NVIDIA显卡。 架构图如…...

JavaWeb day01-HTML入门

Web前端 课程安排 HTML、CSS简介 HTML快速入门 实现标题排版 新闻标题样式...

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS(cortex microcontrol software interface standard一种软件标准接口),官网地址:https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…...

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器 一、概述二、连接器的工作原理安全快照初始快照的默认工作流程行为临时快照触发临时增量快照触发临时阻塞快照增量快照增量快照流程Debezium 如何解决具有相同主键的记录之间的冲突快照窗口触发增量快照具有附加…...

保障信息系统安全保护等级调整期间的安全性

保障信息系统安全保护等级调整期间的安全性: 策略与实践 在当今数字化时代,信息系统已成为企业和组织运营的核心支撑。为了适应不断变化的业务需求和安全威胁环境,信息系统安全保护等级的调整成为必要之举。然而,这一调整过程可能…...

实战:shell编程之全量命令练习

概叙 槽点~~~~~~~! 往期shell相关文章回顾,有兴趣的可以自行阅读和练习。 科普文:一文搞懂Vim-CSDN博客 科普文:jvm笔记-CSDN博客 科普文:一天学会shell编程-CSDN博客 科普文:Linux服务器巡检小结_lin…...

在 CentOS 7 上编译安装 Python 3.11

安装必要的依赖 首先,你需要安装一些开发工具和库,以便编译 Python 和 OpenSSL: yum -y groupinstall "Development tools" yum install -y wget gcc-c pcre pcre-devel zlib zlib-devel libffi-devel zlib1g-dev openssl-devel …...

Qt 4.8.7 + MSVC 中文乱码问题深入分析

此问题很常见,然而网上关于此问题的分析大多不够深刻,甚至有错误;加之Qt5又更改了一些编码策略,而很多文章并未提及版本问题,或是就算提了,读者也不重视。这些因素很容易让读者产生误导。今日我彻底研究透了…...

IDEA的常见代码模板的使用

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …...

arcgis怎么选取某个指定区域地方的数据,比如从全国乡镇数据选取长沙市乡镇数据

一共5个步骤,没一句废话,耐心看完。看完你就会在任何软件选取指定范围的数据了。 一、如图,先将数据加载到arcgis里面,我们要选取里面长沙市的范围数据。 二、选取长沙市的语句 “市” like ‘长沙%’ 切记,切记&…...

二、链表(1)

203.移除链表元素 创建一个虚拟哨兵头节点,就不用考虑原本头结点要不要删除 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def remove…...

KAFKA搭建教程

KAFKA搭建教程 期待您的关注 KAFKA学习笔记 帮助更多人 目录 KAFKA搭建教程 1.下载Kafka并解压 2.添加环境变量 3.修改 server.properties 文件 4.将kafka复制到其它节点 5.修改node1、node2节点的broker.id 6.将master的环境变量同步到node1、 node2 7.启动zookeeper…...

Linux网络——套接字与UdpServer

目录 一、socket 编程接口 1.1 sockaddr 结构 1.2 socket 常见API 二、封装 InetAddr 三、网络字节序 四、封装通用 UdpServer 服务端 4.1 整体框架 4.2 类的初始化 4.2.1 socket 4.2.2 bind 4.2.3 创建流式套接字 4.2.4 填充结构体 4.3 服务器的运行 4.3.1 rec…...

SpringBoot源码深度解析

今天,聊聊SpringBoot的源码,本博客聊的版本为v2.0.3.RELEASE。目前SpringBoot的最新版为v3.3.2,可能目前有些公司使用的SpringBoot版本高于我这个版本。但是没关系,因为版本越新,新增的功能越多,反而对Spri…...

【Qt】常用控件

文章目录 QWidgetenabledgeometrywindow framewindowTitlewindowIconqrc资源管理windowOpacitycursorfonttoolTipfocusPolicystyleSheet 按钮类PushButtonRadioButtonCheckBoxSignals 显示类LabelLCDNumberProgressBarCalendar 输入类LineEditTextEditComboBoxSpinBoxDateTimeE…...

electron 主进程和渲染进程通信

在Electron中,主进程(main process)和渲染进程(renderer process)之间的通信是非常重要的,因为Electron应用通常会将用户界面(由Web技术如HTML, CSS, 和JavaScript构建)和原生功能(如系统对话框、文件I/O等)分开处理。主进程管理应用的生命周期和创建渲染进程,而渲染…...

单片机软件架构师使用Taotoken多模型对比分析内存分配策略

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 单片机软件架构师使用Taotoken多模型对比分析内存分配策略 在嵌入式软件开发中,内存分配策略的选择直接影响着系统的实…...

怎样高效使用Mac微信插件:5大实用功能完全指南

怎样高效使用Mac微信插件:5大实用功能完全指南 【免费下载链接】WeChatExtension-ForMac A plugin for Mac WeChat 项目地址: https://gitcode.com/gh_mirrors/we/WeChatExtension-ForMac 想让你的Mac微信变得更加强大吗?WeChatExtension-ForMac正…...

别再死记硬背了!用PyTorch和TensorFlow动手实现四种池化层,直观理解它的作用

用代码可视化理解深度学习中的池化层:PyTorch与TensorFlow实战指南 当你第一次听说"池化层"这个概念时,是否也感到困惑?为什么神经网络需要这样一个"缩小"图像的层?本文将通过PyTorch和TensorFlow两种框架的实…...

从磁路对称性到电感差异:深度解析永磁同步电机凸极与隐极的本质

1. 永磁同步电机的两种面孔:凸极与隐极 第一次拆解永磁同步电机时,我被转子铁芯上那些凹凸有致的磁极结构吸引了——有的像连绵的山丘(凸极),有的则平整得像镜面(隐极)。这两种结构看似只是外观…...

跨平台文件自由:Free-NTFS-for-Mac 终极解决方案深度解析

跨平台文件自由:Free-NTFS-for-Mac 终极解决方案深度解析 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management…...

告别手动下载!3步轻松批量获取网易云音乐FLAC无损音乐

告别手动下载!3步轻松批量获取网易云音乐FLAC无损音乐 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 你是不是也遇到过这样的烦恼&#x…...

AI驱动音乐合成:JUCE与LibTorch实时音频插件开发全解析

1. 项目概述:当AI遇见音乐合成 如果你和我一样,既是个音乐制作爱好者,又对前沿技术充满好奇,那么最近在GitHub上出现的 martinic/DrMixAISynth 项目,绝对值得你花上一个周末的时间好好研究一番。这个项目&#xff0c…...

从灾难电影到现实防疫:技术视角下的系统脆弱性与韧性构建

1. 从科幻到现实:流行病史与灾难电影的预言性对话作为一名长期关注科技与社会交叉领域的写作者,我发现自己近年来越发沉迷于一种特殊的电影类型——灾难片,尤其是那些以病毒大流行为主题的影片。这并非单纯的娱乐消遣,而更像是一种…...

PyQt-Fluent-Widgets导航组件深度解析:打造专业级侧边栏与选项卡界面

PyQt-Fluent-Widgets导航组件深度解析:打造专业级侧边栏与选项卡界面 【免费下载链接】PyQt-Fluent-Widgets A fluent design widgets library based on C Qt/PyQt/PySide. Make Qt Great Again. 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Fluent-Widget…...

3分钟搞定TrollStore:iOS 14-16.6.1一键安装终极指南

3分钟搞定TrollStore:iOS 14-16.6.1一键安装终极指南 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾为在iOS设备上安装TrollStore而烦恼&#xff1…...