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 条评论
登录 后参与评论

相关文章

来自专栏微信终端开发团队的专栏

WCDB 的 WAL 模式和异步 Checkpoint

通过 A/B Test,最终相比传统 Rollback 模式写耗时减少 70% 以上,还稍稍降低了 DB 损坏率。

8986
来自专栏蓝天

autoconf手册(一)

Autoconf   Creating Automatic Configuration Scripts   Edition 2.13, for Autoco...

951
来自专栏MYSQL轻松学

Mysql Group Replication介绍

一、Mysql Group Replication简介 Mysql Group Replication(MGR)是一个全新的高可用和高扩展的MySQL集群服务...

6934
来自专栏Spark学习技巧

Spark Structured Streaming高级特性

一,事件时间窗口操作 使用Structured Streaming基于事件时间的滑动窗口的聚合操作是很简单的,很像分组聚合。在一个分组聚合操作中,聚合值被唯一保...

1.2K7
来自专栏逸鹏说道

C#线程篇---Windows调度线程准则(3)

Windows本身就是一个抢占式操作系统,它的实现,必定有某种算法在里面,比如什么时候调度哪些线程,需要花费多长时间等问题。 我们时时在用Windows,作为程...

3444
来自专栏企鹅号快讯

Python的开端

今天就说说Python的安装和它的开发环境,我安装的是Python3.5.2,也有很多人用的Python2.7,这两个版本有些地方都变了,但是差异可以学了Pyt...

2146
来自专栏人人都是极客

内存调试的相关分析

我们知道外设访问内存需要通过DMA进行数据搬移,关于cpu, cache, device, dma, memory的关系可以通过下图说明:

1783
来自专栏Samego开发资源

Linux之crontab定时任务

3177
来自专栏Hadoop实操

如何在Redhat中安装R的包及搭建R的私有源

继上一章如何在Redhat中配置R环境后,我们知道对于多数企业来说是没有外网环境的,在离线环境下如何安装R的包,能否搭建R的私有源对R的包进行管理。

8897
来自专栏小樱的经验随笔

BugkuCTF sql注入

1503

扫码关注云+社区

领取腾讯云代金券