您的位置:首页 > 健康 > 养生 > Oracle 12c新特性 In-Memory Column Store

Oracle 12c新特性 In-Memory Column Store

2024/10/5 21:22:33 来源:https://blog.csdn.net/zxrhhm/article/details/140538111  浏览:    关键词: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特性的优势,需要对其进行合理的配置和定期的维护。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com