前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一章 Oracle Database In-Memory 相关概念(续)(IM-1.2)

第一章 Oracle Database In-Memory 相关概念(续)(IM-1.2)

作者头像
Yunjie Ge
发布2022-04-23 09:29:16
1K0
发布2022-04-23 09:29:16
举报
文章被收录于专栏:数据库与编程

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数据库, DUPLICATEDUPLICATE 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=ONINMEMORY_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_TRANSFORM hint 以启用内存中聚合,或者 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语句中使用 DISTRIBUTEDUPLICATE 关键字指定 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在路上。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山东Oracle用户组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高可用支持
  • 易于采用
  • Database In-Memory 的先决条件
  • Database In-Memory 的主要任务
  • IM列存储的工具
    • In-Memory Advisor
      • IM 列存储的 Cloud Control Pages
        • Oracle Compression(压缩) Advisor
          • Oracle 数据泵和 IM 列存储
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档