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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • WebGIS主流的客户端框架比较|OpenLayers|Leaflet|Cesium
  • 【BUG】已解决:AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘
  • SQL中的游标是什么?
  • [Spring Boot]Protobuf解析MQTT消息体
  • 阿里云服务器 篇三:提交搜索引擎收录
  • = null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑
  • VulnHub:insomnia
  • 如何确定企业信息系统的安全保护等级
  • linux内核中list的基本用法
  • ELK日志分析系统部署文档
  • Memcached开发(八):使用PHP进行操作
  • Websocket自动消息回复服务端工具
  • elementUI在手机端使用遇到的问题总结
  • 计算机视觉发展历程
  • docker compose 容器 编排分组
  • 30秒的PHP代码片段(1)数组 - Array
  • Android系统模拟器绘制实现概述
  • crontab执行失败的多种原因
  • Effective Java 笔记(一)
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • gitlab-ci配置详解(一)
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Laravel 中的一个后期静态绑定
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • SpingCloudBus整合RabbitMQ
  • SpringCloud集成分布式事务LCN (一)
  • Vue2 SSR 的优化之旅
  • 记一次用 NodeJs 实现模拟登录的思路
  • 深度学习中的信息论知识详解
  • 数据科学 第 3 章 11 字符串处理
  • 通过npm或yarn自动生成vue组件
  • 微信小程序填坑清单
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #{} 和 ${}区别
  • #QT(一种朴素的计算器实现方法)
  • (4)STL算法之比较
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (SpringBoot)第二章:Spring创建和使用
  • (web自动化测试+python)1
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)进入MySQL 【事务】
  • (一)SvelteKit教程:hello world
  • (转)C#调用WebService 基础
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET 5种线程安全集合
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET 表达式计算:Expression Evaluator
  • .NET 发展历程
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net程序集学习心得