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

相关文章

来自专栏加米谷大数据

MapReduce作业调度

可以通过设置mapred.job.priority属性或JobClient的setJobPriority()方法来设置优先级(在这两种方法中,可以选VERY_H...

36812
来自专栏MYSQL轻松学

Mysql Group Replication介绍

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

5974
来自专栏人人都是极客

内存调试的相关分析

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

1342
来自专栏cloudskyme

云计算读书笔记(二)

云计算原理与应用 云计算服务包括:google文件系统GFS,分布式计算编程模形MapReduce,分布式锁服务Chubby,分布式结构化数据表Bigtable...

4146
来自专栏大数据架构

Kafka设计解析(六)- Kafka高性能架构之道

1746
来自专栏搜云库

HBase 深入浅出

HBase 深入浅出 HBase 在大数据生态圈中的位置 提到大数据的存储,大多数人首先联想到的是 Hadoop 和 Hadoop 中的 HDFS 模块。大家熟...

2949
来自专栏Spark学习技巧

Spark Structured Streaming高级特性

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

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

WCDB 的 WAL 模式和异步 Checkpoint

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

7296
来自专栏北京马哥教育

LVM 灾难修复

LVM 介绍 LVM 简介 LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,最早是 IBM 为 AIX 研发的存储管理机制。LVM...

5328
来自专栏pythonlove

Linux系统内部的名称解析与安全认证(原创)

我们都知道计算机最喜欢的是数字,而人类喜欢的是语言,所以我们在计算机上运行的进程、定义的用户、端口号、协议、ip地址等都需要转换成数字的形式让计算机明白,在Li...

1214

扫码关注云+社区