YH2:In-Memory知识库

In-Memory 是 Oracle 在 12.1.0.2 中引入的新特性,旨在加速分析型 SQL 的速度。传统的 OLTP 应用通过 buffer cache 修改数据,分析性的 SQL 从 IM 列式存储中扫描数据,避免物理读成为性能瓶颈。

列式存储表达式

内存中列存储允许以压缩的列格式将对象(表,分区和子分区)填充到内存中。 内存表达式使经常评估的查询表达式能够在内存中列存储中实现,以供后续重用。

将经常使用的查询表达式的实现值填充到内存中列存储中大大减少了执行查询所需的系统资源,并提供更高的可扩展性。

In-Memory 虚拟列

内存虚拟列使表的某些或所有用户定义的虚拟列能够将其值实现(预先计算)并填充到内存中列存储以及该表的所有非虚拟列。

将用户定义的虚拟列的值实现到内存中列存储可以通过使用内存中技术(例如SIMD(单指令,多数据)向量处理)来扫描和过滤虚拟列值,从而大大提高查询性能, 就像一个非虚拟列。

列式存储快速启动

内存列存储允许以压缩的柱形格式在内存中填充对象(例如表、分区和子分区)。 到目前为止,柱形格式只能在内存中使用。 这意味着在数据库重新启动后,必须使用多步骤过程从头开始填充内存中列存储,该过程将传统的行格式化数据转换为压缩的列格式并放入内存中。

内存中快速启动使数据以比以前更快的速度重新填充到内存中列存储中,方法是以压缩的柱形格式保存磁盘上内存列存储中当前填充的数据副本。

内存中的FastStart主要减少了系统重新启动后将数据重新填充到内存中列存储所需的时间。 这允许企业开始利用分析查询的性能优势,比以前更快地以柱形格式访问数据。

同时,将会有专门的fast start 表空间用于存储fast start 数据。

列式存储自动数据优化支持

自动数据优化(ADO)可实现信息生命周期管理(ILM)任务的自动化。 ADO的自动功能取决于热图功能,它在行级(聚合到块级统计)和段级跟踪访问。 最初,ADO支持使用在段或表空间级别定义的策略进行压缩分层和存储分层。 ADO支持现在已经扩展到包括内存中列存储。 ADO通过基于热图统计将对象(表,分区或子分区)移入和移出内存来管理内存中列存储。对内存中列存储的ADO支持可确保基于热图统计信息最优化使用内存中列存储。

由于内存中列存储是从系统全局区域(SGA)分配的,它使用主内存,主内存资源有限并且昂贵。 ADO确保只使用用户定义的策略在内存中列存储中填充最佳候选对象,提供了最佳性能,而不需要DBA经常干预手动管理内存中列存储的内容。

Join Group

填充到内存中列存储中的数据使用许多不同的编码技术进行压缩。 如果在连接中一起使用的两个列使用不同的技术编码,则必须解压缩这两个列以执行连接。 连接组允许用户指定哪些列用于跨表的连接,因此这些列始终可以使用相同的编码技术进行压缩。

在使用相同技术编码的连接中一起使用的列使得能够进行连接,而不必通过提高连接的效率来解压缩列。

In-Memory表达式跟踪

SQL语句通常包括诸如“+”或“ - ”的表达式。 更复杂的示例包括PL / SQL函数或SQL函数,如LTRIM和TO_NUMBER。 存储库维护在编译期间识别并在执行期间捕获的相关表达式的使用信息。 涉及多个列或函数的复杂表达式造成难以精确地估计优化器中的选择性,从而导致次优计划。 通过表达式跟踪,处理有关表达式及其用法的更多信息对于建立更好的查询执行计划很有用。

Oracle ADG上的列式存储支持

Oracle ADG上的列式存储支持

Oracle ADG上的列式存储支持Oracle ADG上的列式存储支持

Oracle Active Data Guard允许以只读模式打开standby数据库。 此功能使企业能够将生产报告工作负载从primary数据库卸载到同步standby数据库。 因此,现在可以在Oracle Active Data Guard standby数据库上使用内存中列存储。 这使得standby 数据库上处理的报告工作负载能够利用在存储器中以压缩柱状格式访问数据。 这也使扫描、联接和聚合的执行速度比传统磁盘格式的快。

还可以在primary数据库和standby数据库上的内存中列存储中填充完全不同的数据集,从而有效地将应用程序可用的内存中列存储的大小增加一倍。

通过启用在Oracle Active Data Guard standby数据库上运行的报告工作负载来使用内存中列存储,可以极大地提高工作负载的执行性能。 这是因为处理可以充分利用在存储器中以压缩柱形格式访问数据。

列式存储自动调整列大小

Oracle ADG上的列式存储支持

Oracle ADG上的列式存储支持Oracle ADG上的列式存储支持

假设SGA中有足够的内存可用,就可以在数据库打开时动态增加内存区域的大小,可以调整内存中列存储的大小,而无需重新启动数据库。

In-Memory JSON Queries

Oracle ADG上的列式存储支持

Oracle ADG上的列式存储支持Oracle ADG上的列式存储支持

将JSON对象的虚拟列加载到In-Memory虚拟列中; 使用高度优化的内存二进制格式加载完整的JSON文档; 对JSON内容的查询操作自动导向In-Memory; 对虚拟列的简单查询; 使用In-Memory二进制格式的更复杂的JSON处理

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

内存为王:DBIM RAC Share Nothing架构的挑战和解决方案

陈焕生 Oracle Real-World Performance Group 成员,senior performance engineer,专注于 OLTP...

2585
来自专栏CSDN技术头条

NewSQL数据库大对象块存储原理与应用

一、前言 企业内容管理(EnterpriseContent Management,ECM)系统是一种管理非结构化内容的系统,传统代表为EMC Document...

1875
来自专栏java架构师

Hadoop学习19--推测式执行

  所谓推测式执行,就是计算框架判断,如果有一个task执行的过慢,则会启动备份任务,最终使用原任务+备份任务中执行较快task的结果。产生原因一般是程序bug...

2789
来自专栏我是攻城师

5行代码怎么实现Hadoop的WordCount?

2977
来自专栏用户2442861的专栏

Java NIO浅析

作者:美团点评技术团队 链接:https://zhuanlan.zhihu.com/p/23488863 来源:知乎 著作权归作者所有。商业转载请联系作者...

894
来自专栏编程一生

一个处理大数据的后台服务(已废弃)

922
来自专栏数据和云

Oracle 12.2新特性掌上手册 - 第二卷 In-Memory增强

编辑手记: In-Memory 是 Oracle 在 12.1.0.2 中引入的新特性,旨在加速分析型 SQL 的速度。传统的 OLTP 应用通过 buffer...

2705
来自专栏腾讯云数据库团队的专栏

Greenplum 简单性能测试与分析

通过TPC-H基准测试,可获得数据库单位时间内的性能处理能力,为评估数据库系统的现有性能服务水平提供有效依据。

82112
来自专栏MongoDB中文社区

​MongoDB 4.0 系列之 \b—— 事务实现解析(\b一)

Mongodb4.0引入了多文档事务的特性,我们来看,4.0中是如何进行一个多文档事务的(js的mongoshell代码)。

1113
来自专栏IT大咖说

老树新花-Java异步服务开发

摘要 饿了么资深Java工程师朱杰从同步异步概念介绍、使用Java来开发异步化服务、回调监听模式所遇到的问题和解决这三方面来我们全面解读Java异步服务开发。 ...

3456

扫码关注云+社区