当前位置:网站首页>第一章 Oracle Database In-Memory 相关概念(续)(IM-1.2)
第一章 Oracle Database In-Memory 相关概念(续)(IM-1.2)
2022-04-23 09:52:00 【Grainger】
1 Oracle Database In-Memory 相关概念
接上期:第一章 Oracle Database In-Memory 相关概念(IM-1.1)
提高混合工作负载的性能
虽然OLTP应用程序不能从IM列存储中访问数据,但双内存(dual-memory)格式可以间接提高OLTP性能。
当所有数据存储在行(rows)中时,提高分析查询性能需要创建访问结构。 标准方法是创建分析索引、物化视图和OLAP多维数据集。 例如,表可能需要3个索引来提高OLTP应用程序的性能(1个主键和2个外键索引)和10-20个附加索引,以提高分析查询的性能。 虽然此技术可以提高分析查询性能,但会降低OLTP性能。 在表中插入行需要修改表上的所有索引。 随着索引数量的增加,插入速度降低。
将数据填充到IM列存储中时,可以删除分析访问结构。 此技术减少了存储空间和处理开销,因为只需要更少的索引、物化视图和OLAP多维数据集。 例如,插入数据,将导致修改1-3个索引而不是11-23个索引。
虽然IM列存储可以大幅提高业务应用程序、特殊分析查询和数据仓库工作负载中的分析查询的性能,但使用索引查找执行短事务的纯OLTP数据库更少受益。 IM列存储不会提高以下类型的查询的性能:
- 具有复杂谓词的查询
- 用于选择大量列的查询
- 返回大量行的查询
高可用支持
IM列存储完全集成到Oracle数据库中,支持所有高可用性功能。
列格式不会更改Oracle数据库磁盘存储格式。 因此,缓冲区缓存修改和重做日志功能以相同的方式。 完全支持RMAN,Oracle Data Guard和Oracle ASM等功能。
在Oracle Real Application Clusters(Oracle RAC)环境中,默认情况下,每个节点都有自己的IM列存储。 根据您的要求,您可以以不同的方式填充对象:
- 在每个节点上填充不同的表。 例如,sales 实体表位于一个节点上,而products维度表位于不同的节点上。
- 单个表分布在不同的节点之间。 例如,同一散列分区(hash-partitioned)表的不同分区在不同节点上,或单个非分区表的不同rowid范围在不同节点上。
- 某些对象显示在每个节点上的IM列存储中。 例如,您可以在每个节点中填充
products维度表,但是在不同节点间分布sales实体表的分区。
易于采用
Database In-Memory 很容易实现,并且不需要更改应用程序。
Database In-Memory 采用的关键方面包括:
- 易于部署 不需要用户管理的数据迁移。 数据库以磁盘上的行格式存储数据,并在填充IM列存储时自动将行数据转换为列格式。
- 与现有应用程序的兼容性 不需要更改应用程序。 优化器自动利用列格式。 如果应用程序连接到数据库并发出SQL,那么它可以从Database In-Memory功能中受益。
- 完全SQL兼容性 Database In-Memory对SQL没有任何限制。 分析查询可以受益,无论他们使用Oracle分析函数还是定制的PL / SQL代码。
- 易于使用 不需要复杂的设置。
INMEMORY_SIZE初始化参数指定保留供IM列存储使用的内存量。 DDL语句中的INMEMORY子句指定要填充到IM列存储中的对象或列。 通过配置IM列存储,您可以立即提高现有分析工作负载和即席查询的性能。
Database In-Memory 的先决条件
所有Database In-Memory功能都需要Oracle Database In-Memory选项。 IM列存储不需要特殊硬件。
先决条件包括:
- IM列存储需要至少100 MB的内存。 存储大小包含在
MEMORY_TARGET中。 请参见“评估IM列存储所必需的大小”。 - 对于Oracle RAC数据库,
DUPLICATE和DUPLICATE ALL选项需要 Oracle Engineered Systems。 请参见“在Oracle RAC中部署IM列存储”。
Database In-Memory 的主要任务
对于受益于IM列存储的查询,唯一需要的任务是指定IM列存储的大小,并指定用于填充的对象和列。 查询优化和可用性功能需要额外的配置。
配置IM列存储的主要任务
主要任务是:
- 通过指定IM列大小来启用IM列存储。 请参见“为数据库启用IM列存储”。
- 指定用于填充到IM列存储中的表、列、表空间或物化视图。 请参见“为 In-Memory 填充启用对象”。
- (可选)您可以创建自动数据优化(ADO)策略,以便在IM列存储中的对象上设置
INMEMORY属性。 例如,策略可以在未访问10天后从IM列存储中驱逐sales表。 内存中ADO功能需要初始化参数设置HEAT_MAP=ON,INMEMORY_SIZE设置为非零值。 请参见“为IM列存储启用ADO”。
优化内存中查询的主要任务
In-memory 查询优化不需要IM列存储起作用。 以下优化任务是可选的:
- 使用
DBMS_INMEMORY_ADMIN软件包管理IM列存储中IM表达式的自动检测。 例如,调用IME_CAPTURE_EXPRESSIONS过程以定义数据库可以标识“热”表达式,然后逐渐填充它们。INMEMORY_EXPRESSIONS_USAGE初始化参数控制数据库可填充的IM表达式的类型:静态、动态或两者。 请参见“INMEMORY_EXPRESSIONS_USAGE”。 - 使用
CREATE INMEMORY JOIN GROUP语句定义连接组(join groups)。 候选是在连接谓词中经常配对的列,例如,连接实表和维度表的列。 请参见“创建连接组(Join Groups)”。 - 如果特定查询块需要,请指定
VECTOR_TRANSFORMhint 以启用内存中聚合,或者NO_VECTOR_TRANSFORM禁用它。 in-memory 聚合是一种自动启用的功能,无法使用初始化参数或DDL进行控制。 请参见“IM聚合的控制”。 - 通过设置初始化参数
INMEMORY_TRICKLE_REPOPULATE_SERVERS_PERCENT,在两分钟的时间间隔内限制通过涓流(trickle)重新填充更新的IMCU数量。 您可以通过将此初始化参数设置为0来禁用涓流(trickle)重新填充。 请参见“基于阈值和涓流(Trickle)重新填充”。
管理可用性的主要任务
主要任务是:
- 使用
DBMS_INMEMORY_ADMIN.ENABLE_FASTSTART过程指定内存中的快速启动(IM FastStart)表空间。 IM FastStart在重新启动数据库时优化IM列存储中的数据库对象的数量。 IM FastStart将信息存储在磁盘上,以便更快地填充IM列存储。 请参见“为IM列存储启用IM FastStart”。 - 对于对象或表空间,在DDL语句中使用
DISTRIBUTE或DUPLICATE关键字指定INMEMORY以控制Oracle RAC中的数据分布。 默认情况下,每个内存对象分布在Oracle RAC实例之间,有效地采用无列共享架构用于IM列存储。 请参见“在Oracle RAC中部署IM列存储”。 - 在Oracle Data Guard环境中,可以在主库或备库上使用相同的Database In-Memory初始化参数和语句。 例如,可以通过设置
INMEMORY_SIZE在主库和备库上启用IM列存储。 (可选)使用DDL中的INMEMORY DISTRIBUTE FOR SERVICE子句填充主库和备库的IM列存储中的不同数据集。 请参见“关于 In-Memory Population”。
IM列存储的工具
管理IM列存储或其他Database In-Memory功能不需要特殊工具或实用程序。 完全支持诸如SQL * Plus,SQL Developer和Oracle企业管理器(企业管理器)之类的管理工具。
本节介绍具有特定Database In-Memory功能支持的工具:
- In-Memory Advisor In-Memory Advisor 程序是一个可下载的PL / SQL程序包,用于分析数据库中的分析处理工作负载。 此顾问程序建议IM列存储的大小以及将受益于内存中填充的对象的列表。
- IM列存储的 Cloud Control Pages Enterprise Manager Cloud Control (Cloud Control) 提供了 In-Memory 列存储中心主页。 此页面提供IM列存储的仪表板界面。
- Oracle Compression(压缩) Advisor Oracle Compression Advisor 估计您可以使用
MEMCOMPRESS子句实现的压缩率。 顾问程序使用DBMS_COMPRESSION接口。 - Oracle 数据泵和 IM 列存储 您可以使用
impdp命令的TRANSFORM=INMEMORY:y选项导入为IM列存储启用的数据库对象。
In-Memory Advisor
In-Memory Advisor 程序是一个可下载的PL / SQL程序包,用于分析数据库中的分析处理工作负载。 此顾问程序建议IM列存储的大小以及将受益于内存中填充的对象的列表。
In-Memory Advisor 根据SQL计划基数、活动会话历史(ASH)、并行查询使用和其他统计信息来区分分析处理与其他数据库活动。 In-Memory Advisor 程序根据统计数据和启发式压缩因子估计IM列存储中的对象大小。
In-Memory Advisor 根据以下内容估计分析处理性能改进因素:
- 消除等待事件,例如用户I / O等待、集群传输等待和缓冲区高速缓存锁存等待
- 与特定压缩类型相关的查询处理优势
- 针对特定压缩类型的解压缩成本启发式算法
- SQL计划基数、结果集中的列数等
In-Memory Advisor 程序的输出是一个包含建议的报告。 该顾问程序还生成一个SQL * Plus脚本,通过 INMEMORY 子句更改推荐的对象。
In-Memory Advisor 程序不包括在存储的PL / SQL包中。 您必须从Oracle Support 中下载。
IM 列存储的 Cloud Control Pages
Enterprise Manager Cloud Control (Cloud Control) 提供了 In-Memory 列存储中心主页。 此页面提供IM列存储的仪表板界面。
使用此页面来监视数据库对象(例如表、索引、分区和表空间)的内存中支持。 您可以查看对象的 In-Memory 功能并监视其内存使用情况统计信息。 除非另有说明,本手册介绍的是Database In-Memory功能的命令行界面。
Oracle Compression(压缩) Advisor
Oracle Compression Advisor 估计您可以使用 MEMCOMPRESS 子句实现的压缩率。 顾问程序使用DBMS_COMPRESSION 接口。
Oracle 数据泵和 IM 列存储
您可以使用 impdp 命令的 TRANSFORM=INMEMORY:y 选项导入为IM列存储启用的数据库对象。
使用此选项,Oracle 数据泵(Data Pump)会为具有一个的所有对象保留IM列存储子句。 当指定 TRANSFORM=INMEMORY:n 选项时,Data Pump 将从包含一个的所有对象中删除IM列存储子句。
还可以在导入期间使用 TRANSFORM=INMEMORY_CLAUSE:string 选项,覆盖转储文件中数据库对象的IM列存储子句。 例如,您可以使用此选项更改导入的数据库对象的IM列存储压缩。
(本章结束,第二章:IM 列存储体系结构(IM-2))
山东Oracle用户组(Shandong Oracle User Group),简称:SDOUG,是一个充满朝气、年轻的非营利性组织,旨在为济南及周边地区技术爱好者提供一个交流平台。SDOUG会不定期组织线下技术分享活动,促进本地区及周边IT技术的发展、帮助技术爱好者提高自己。分享技术、分享快乐,SDOUG在路上。
版权声明
本文为[Grainger]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1986066
边栏推荐
- 论文阅读《Integrity Monitoring Techniques for Vision Navigation Systems》
- F-niu Mei's apple tree (diameter combined)
- Where is int a = 1 stored
- Integral function and Dirichlet convolution
- Personal homepage software fenrus
- 最长公共前串
- SQL调优系列文章之—SQL性能方法论
- 第二章 In-Memory 体系结构 (IM-2.2)
- Less than 100 secrets about prime numbers
- 杰理之系统事件有哪些【篇】
猜你喜欢

高薪程序员&面试题精讲系列91之Limit 20000加载很慢怎么解决?如何定位慢SQL?

计算机网络安全实验二|DNS协议漏洞利用实验

Setnx command execution failed due to full redis memory

Comparison of overloading, rewriting and hiding

杰理之更准确地确定异常地址【篇】

Nvidia最新三维重建技术Instant-ngp初探

2022年广东省安全员A证第三批(主要负责人)考试试题及答案

PHP notes (I): development environment configuration

JS what is an event? Event three elements and operation elements
MapReduce计算流程详解
随机推荐
计算机网络安全实验二|DNS协议漏洞利用实验
Function realization of printing page
[COCI] lattice (dichotomy + tree divide and conquer + string hash)
Planning and construction of industrial meta universe platform
Odoo server setup notes
2022年上海市安全员C证考试题库及答案
High paid programmer & interview question series 91 limit 20000 loading is very slow. How to solve it? How to locate slow SQL?
正大国际讲解道琼斯工业指数到底是什么?
防疫登记小程序
AI上推荐 之 MMOE(多任务yyds)
2022年流动式起重机司机考试题库模拟考试平台操作
Leetcode question bank 78 Subset (recursive C implementation)
SAP 03-amdp CDs table function using 'with' clause
雨生百谷,万物生长
Go语言实践模式 - 函数选项模式(Functional Options Pattern)
kernel-pwn学习(4)--Double Fetch&&0CTF2018-baby
SAP debug debug for in, reduce and other complex statements
Cloud identity is too loose, opening the door for attackers
NEC infrared remote control coding description
ARM调试(1):两种在keil中实现printf重定向到串口的方法