Oracle Exadata 系统软件概述

2024年 5月 10日 101.6k 0

Oracle Exadata 存储服务器是高度优化的存储服务器,运行Oracle Exadata 系统软件来存储和访问Oracle 数据库数据。

对于传统存储,数据被传输到数据库服务器进行处理。相比之下,Oracle Exadata 系统软件提供数据库感知存储服务,例如从数据库服务器卸载 SQL 和其他数据库处理的能力,同时对 SQL 处理和数据库应用程序保持透明。Oracle Exadata存储服务器在存储级别处理数据,并仅将需要的数据传递给数据库服务器。

Oracle Exadata 系统软件安装在存储服务器和数据库服务器上。Oracle Exadata 系统软件将一些 SQL 处理从数据库服务器卸载到存储服务器。Oracle Exadata 系统软件除了传统的数据传送之外,还支持数据库实例和底层存储之间的功能传送。函数传送大大减少了数据库服务器必须完成的数据处理量。消除数据传输和数据库服务器工作负载可以极大地改善经常受到带宽限制的查询处理操作。消除数据传输还可以为包括大批量和报告处理操作的在线事务处理 (OLTP) 系统带来显着的好处。

Oracle Exadata 存储服务器的硬件组件 经过精心挑选,以满足高性能处理的需求。Oracle Exadata 系统软件经过优化,可以最大限度地利用硬件组件。每个存储服务器都为磁盘上存储的数据提供出色的处理带宽,通常比传统解决方案好几倍。

Oracle Exadata存储服务器在服务器和存储之间使用最先进的RDMA 网络结构互连。每个RDMA 网络结构链路为InfiniBand 网络结构提供 40 Gb/s 的带宽,为 RoCE 网络结构提供 100 Gb/s 的带宽。此外,互连协议使用直接数据放置(也称为直接内存访问 (DMA)),通过直接将数据从线路移动到数据库缓冲区而无需额外副本来确保较低的 CPU 开销。RDMA网络结构具有 LAN 网络的灵活性和存储区域网络 (SAN) 的效率。与RDMA Network Fabric网络, Oracle Exadata消除了可能降低性能的网络瓶颈。此RDMA Network Fabric网络还为Oracle Real Application Clusters (Oracle RAC)服务器 提供高性能集群互连。

每个存储服务器都包含持久存储介质,可以是硬盘驱动器 (HDD) 和闪存设备的混合。存储服务器有多种配置,每种配置都可根据您的要求最大限度地提高存储的某些方面。

每个存储服务器都包含持久存储介质,可以是硬盘驱动器 (HDD) 和闪存设备的混合。高容量 (HC) 存储服务器包含用于主数据存储的 HDD 和主要用于缓存目的的高性能闪存。Extreme Flash (EF) 存储服务器旨在实现最高性能并具有全闪存存储配置。扩展 (XT) 存储服务器适用于扩展容量应用程序,例如在线数据归档,并且仅包含 HDD。HC 和 EF 存储服务器还配备了用于Exadata RDMA 内存缓存(XRMEM 缓存)的额外内存),它支持使用远程直接内存访问(RDMA)的高性能数据访问。

Oracle Exadata架构可扩展到任何性能级别。为了实现更高的性能或更大的存储容量,您可以在配置中添加更多存储服务器(单元)。随着更多存储服务器的添加,容量和性能呈线性增长。数据在存储服务器之间进行镜像,以确保存储服务器的故障不会导致数据或可用性丢失。横向扩展架构实现了近乎无限的可扩展性,同时通过允许按需增量购买存储来降低成本。

Oracle Exadata 系统软件的主要特性

  • 可靠性、模块化和成本效益
    Oracle Exadata 存储服务器在横向扩展架构中采用经济高效的模块化存储硬件,从而实现高可用性和可靠性。

可靠性、模块化和成本效益

Oracle Exadata 存储服务器在横向扩展架构中采用经济高效的模块化存储硬件,从而实现高可用性和可靠性。

Oracle Exadata 存储服务器的架构旨在通过镜像数据、采用故障隔离技术以及防止磁盘和其他存储硬件故障来消除单点故障。当发生故障时,即使是停电也会受到限制或消除。

在Oracle Exadata 存储服务器架构中,多个存储服务器提供一个存储池来支持一个或多个数据库。智能软件自动、透明地在存储服务器之间均匀分配数据。Oracle Exadata 存储服务器支持动态磁盘更换,Oracle Exadata 系统软件提供在线动态数据重新分配,确保数据在存储之间保持平衡,而不会中断数据库处理。Oracle Exadata 存储服务器还提供针对磁盘和存储服务器故障的数据保护。

  • 与 Oracle 数据库的兼容性
    当满足最低版本要求时,Oracle Exadata 系统软件完全支持所有Oracle 数据库功能。

与Oracle数据库的兼容性

当满足最低版本要求时,Oracle Exadata 系统软件完全支持所有Oracle 数据库功能。

Oracle Exadata 系统软件同样适用于Oracle 数据库的单实例或Oracle 真正应用集群 (Oracle RAC)部署。Oracle Data Guard、Oracle Recovery Manager (RMAN)、Oracle GoldenGate和其他数据库功能的管理方式与 Exadata 存储单元与传统存储的管理方式相同。这使得数据库管理员能够使用他们熟悉的相同工具。

  • 智能闪存技术Oracle Exadata 系统软件
    的 Exadata 智能闪存缓存功能可智能地将数据库对象缓存在闪存中,用非常快速的闪存操作取代缓慢的机械 I/O 磁盘操作。

智能闪存技术

Oracle Exadata 系统软件的 Exadata 智能闪存缓存功能可智能地将数据库对象缓存在闪存中,用非常快速的闪存操作取代缓慢的机械 I/O 磁盘操作。

  • Exadata 智能闪存缓存
    Exadata 智能闪存缓存将经常访问的数据存储在高性能闪存中。
Exadata 智能闪存缓存

Exadata 智能闪存缓存将经常访问的数据存储在高性能闪存中。

Exadata 智能闪存缓存自动与 Oracle 数据库结合使用,通过支持经常访问的高价值数据来智能优化缓存效率。每个数据库 I/O 都包含一个标记,指示重复数据访问的可能性。该信息与内部统计数据和其他度量(例如对象大小和访问频率)相结合,以确定是否缓存数据。

同样重要的是,Exadata 智能闪存缓存可避免缓存永远不会重用或无法放入缓存的数据。例如,备份操作不会重复读取数据,因此不会缓存与备份相关的 I/O。

默认情况下,缓存会自动发生,不需要用户或管理员的努力。

尽管通常不要求或不建议这样做,但Oracle Exadata 系统软件还允许管理员覆盖默认缓存策略并将特定表和索引段保留在缓存中或保留在缓存中。

最初,Exadata 智能闪存缓存 仅在直写模式下运行。在直写模式下,数据库写入首先写入磁盘,然后填充闪存。如果Exadata 智能闪存缓存在直写模式下运行时闪存设备发生故障,则不会丢失数据,因为数据已经在磁盘上。

  • 回写式闪存缓存
    回写式闪存缓存可将 I/O 直接写入Exadata 智能闪存缓存。
回写式闪存缓存

回写式闪存缓存可将 I/O 直接写入Exadata 智能闪存缓存。

当Exadata 智能闪存缓存处于回写模式时,数据库写入首先写入闪存缓存,然后写入磁盘。Oracle Exadata 系统软件版本 11.2.3.2.0引入了写回模式。

通过利用闪存提供的快速延迟,写密集型应用程序可以从回写模式中显着受益。如果您的应用程序写入密集,并且您遇到高 I/O 延迟或大量等待free buffer waits,那么您应该考虑使用回写式闪存缓存。

使用回写模式下的Exadata 智能闪存缓存,当缓存在将同一块写入磁盘之前吸收对同一块的多次写入时,磁盘 I/O 总量也会减少。节省的 I/O 带宽可用于增加应用程序吞吐量或为其他工作负载提供服务。

但是,如果闪存设备在使用回写模式时发生故障,则尚未持久保存到磁盘的数据将会丢失,并且必须从镜像副本中恢复。因此,建议使用回写模式并结合使用高冗余(三重镜像)来保护数据库文件。

回写式闪存缓存的内容在重新启动后仍保留,从而消除了填充缓存所需的任何预热时间。

  • Exadata 智能闪存日志
    Exadata 智能闪存日志通过加速性能关键型日志写入操作来缩短事务响应时间并提高 I/O 密集型工作负载的总体数据库吞吐量。
 Exadata 智能闪存日志

Exadata 智能闪存日志通过加速性能关键型日志写入操作来缩短事务响应时间并提高 I/O 密集型工作负载的总体数据库吞吐量。

提交用户事务的时间对日志写操作的延迟非常敏感。此外,许多性能关键的数据库算法,例如空间管理和索引拆分,对日志写入延迟非常敏感。

尽管磁盘控制器具有大型电池支持的 DRAM 缓存,可以非常快速地接受写入,但在繁忙期间,当磁盘控制器缓存偶尔充满尚未写入磁盘的块时,某些磁盘写入操作仍然可能很慢。即使相对较少的缓慢重做日志写入操作也可能会出现明显的性能问题。

Exadata 智能闪存日志可降低性能敏感的重做日志写入 I/O 操作的平均延迟,从而消除因重做日志写入缓慢而可能出现的性能瓶颈。Exadata 智能闪存日志通过同时向两个媒体设备执行重做日志写入来消除延迟峰值。一旦对任一媒体设备的第一次写入完成,重做写入就会得到确认。

在Oracle Exadata 系统软件 版本 20.1 之前,Exadata 智能闪存日志对磁盘和闪存存储执行同步写入。通过此配置,Exadata 智能闪存日志可改善平均日志写入延迟并提高整体数据库吞吐量。但是,由于所有日志写入最终都必须持久保存到磁盘,因此此配置受到总体磁盘吞吐量的限制,并且对受磁盘吞吐量限制的应用程序几乎没有任何缓解。

Oracle Exadata 系统软件版本 20.1 添加了进一步的优化,称为智能闪存日志写回,它在写回模式下使用Exadata 智能闪存缓存而不是磁盘存储。通过此配置,Exadata 智能闪存日志可改善平均日志写入延迟和整体日志写入吞吐量,从而消除要求苛刻的吞吐量密集型应用程序的日志记录瓶颈。

  • 持久内存加速器和 RDMA
    持久内存 (PMEM) 加速器使用远程直接内存访问 (RDMA) 提供对持久内存的直接访问,从而实现更快的响应时间和更低的读取延迟。

持久内存加速器和 RDMA

持久内存 (PMEM) 加速器使用远程直接内存访问 (RDMA) 提供对持久内存的直接访问,从而实现更快的响应时间和更低的读取延迟。

从Oracle Exadata 系统软件版本19.3.0开始,需要超低响应时间的工作负载(例如股票交易和 IOT 设备)可以以 PMEM 缓存和 PMEM 日志的形式利用 PMEM 和 RDMA。

当数据库客户端从 PMEM 缓存读取时,客户端软件对缓存数据执行 RDMA 读取,这会绕过存储服务器软件,并比Exadata 智能闪存缓存更快地交付结果。

PMEM 缓存与Exadata 智能闪存缓存配合使用。下表描述了配置 PMEM Cache 时支持的缓存模式组合:

PMEM 缓存模式 闪存缓存模式 支持的配置?
直写式 直写式

是的。

这是具有正常冗余的高容量 (HC) 服务器的默认配置。

直写式 回写式

是的。

这是具有高冗余的 HC 服务器的默认配置。这也是 Extreme Flash (EF) 服务器的默认配置。

回写式 回写式

是的。

但是,最佳实践建议是以直写模式配置PMEM 缓存。此配置提供最佳性能和可用性。

注意:从Oracle Exadata 系统软件版本23.1.0开始,PMEM 缓存仅在直写模式下运行。

回写式 直写式

不。

如果没有回写式闪存缓存的支持,写入密集型工作负载可能会使回写模式下的 PMEM 缓存过载。

如果未配置 PMEM 缓存,Exadata 智能闪存缓存在回写和直写模式下均受支持。

重做日志写入是关键的数据库操作,需要及时完成以防止负载峰值或停滞。Exadata 智能闪存日志旨在防止重做写入延迟异常值。PMEM Log 通过使用 PMEM 和 RDMA 有助于进一步减少重做日志写入延迟。

借助 PMEM Log,数据库客户端使用 RDMA 将重做日志 I/O 缓冲区直接发送到存储服务器上的 PMEM,从而减少传输延迟。然后,单元服务器 ( )稍后 cellsrv将重做写入Exadata 智能闪存日志(如果启用)和磁盘。

减少重做日志写入延迟可提高 OLTP 性能,从而提高事务吞吐量。在绕过 PMEM Log 的情况下,仍然可以使用 Exadata 智能闪存日志。

  • Exadata RDMA 内存
    Oracle Exadata 系统软件版本23.1.0引入了Exadata RDMA 内存(XRMEM)。XRMEM 整合了所有 Exadata 功能,可使用远程直接内存访问 (RDMA) 直接访问存储服务器内存,从而实现更快的响应时间和更低的读取延迟。

 Exadata RDMA 内存

Oracle Exadata 系统软件版本23.1.0引入了Exadata RDMA 内存(XRMEM)。XRMEM 整合了所有 Exadata 功能,可使用远程直接内存访问 (RDMA) 直接访问存储服务器内存,从而实现更快的响应时间和更低的读取延迟。

XRMEM 包含之前基于持久内存 (PMEM) 的 Exadata 数据和提交加速器,该加速器仅在 Exadata X8M和X9M存储服务器型号中可用。从 Exadata X10M开始,XRMEM 无需专门的持久内存即可实现 RDMA 的优势,并准备好利用内存和存储硬件的发展。

在 Exadata X10M系统上,需要超低响应时间的工作负载(例如股票交易和 IOT 设备)可以利用XRMEM 缓存。当数据库客户端从 XRMEM 缓存中读取数据时,客户端软件会对缓存数据执行 RDMA 读取,从而绕过存储服务器软件和网络层,消除昂贵的 CPU 中断和上下文切换,并且比Exadata 智能闪存缓存更快地交付结果。在这种情况下, XRMEM 缓存仅在直写模式下运行,数据库写入保存到持久存储中。

在 Exadata X10M上,XRMEM 缓存可在高容量 (HC) 和极速闪存 (EF) Exadata X10M存储服务器上使用,利用服务器上可用的高性能动态随机存取存储器 (DRAM)。在此环境中,XRMEM 缓存自动运行,无需单独配置或持续管理。

在装有Oracle Exadata 系统软件版本23.1.0的现有 Exadata X8M和X9M系统上,持久内存数据加速器(也称为PMEM 缓存(或 ))现在称为XRMEM 缓存(或)。同样,持久内存提交加速器,也称为 PMEM 日志(或),现在是 XRMEM 日志(或 )。但是,用于管理的 CellCLI 命令 和资源仍然可用于向后兼容。 PMEMCACHEXRMEMCACHEPMEMLOGXRMEMLOGPMEMCACHEPMEMLOG

Oracle Exadata 系统软件版本23.1.0不在XRMEMLOGExadata X10M系统上实施。

  • 集中存储
    您可以使用Oracle Exadata将存储需求整合到可供多个数据库使用的中央池中。

集中存储

您可以使用Oracle Exadata将存储需求整合到可供多个数据库使用的中央池中。

Oracle Exadata将每个数据库的数据和 I/O 负载均匀分布到 Exadata 存储服务器中的可用磁盘上。每个数据库都可以使用所有可用磁盘来实现卓越的 I/O 速率。Oracle Exadata以更低的成本提供更高的效率和性能,同时还降低了存储管理开销。

  • I/O 资源管理 (IORM)
    I/O 资源管理 (IORM)和Oracle 数据库资源管理器使多个数据库和可插拔数据库能够共享相同的存储,同时确保 I/O 资源在各个数据库之间分配。

 I/O 资源管理(IORM)

I/O 资源管理 (IORM)和Oracle 数据库资源管理器使多个数据库和可插拔数据库能够共享相同的存储,同时确保 I/O 资源在各个数据库之间分配。

Oracle Exadata 系统软件与IORM和Oracle 数据库资源管理器配合使用,确保满足客户定义的策略,即使多个数据库共享同一组存储服务器也是如此。因此,一个数据库无法独占 I/O 带宽并降低其他数据库的性能。

IORM使存储单元能够根据管理员建立的共享和优先级为所有数据库中的多个应用程序和用户之间的 I/O 资源提供服务。这改善了在线事务处理 (OLTP) 和报告工作负载的共存,因为与吞吐量敏感的批处理应用程序相比,可以为延迟敏感的 OLTP 应用程序提供更大份额的磁盘和闪存 I/O 带宽。Oracle 数据库资源管理器使管理员能够根据每个应用程序控制数据库主机上的处理器利用率。IORM和Oracle Database Resource Manager的结合使管理员能够建立更准确的策略。

IORM还管理Exadata 智能闪存缓存和Exadata RDMA 内存缓存(XRMEM 缓存)的空间利用率。可以保证关键 OLTP 工作负载在Exadata 智能闪存缓存或XRMEM 缓存中的空间,以提供一致的性能。

数据库或可插拔数据库 (PDB)的IORM是通过Oracle 数据库资源管理器实现和管理的。数据库实例中的Oracle 数据库资源管理器与存储单元中的IORM软件进行通信,以管理用户定义的服务级别目标。数据库资源计划是从数据库管理的,而数据库间计划是在存储单元上管理的。

  • Exadata 混合列压缩
    Exadata 混合列压缩使用列组织存储数据,这将相似的值紧密结合在一起并提高压缩率。

Exadata 混合列压缩

Exadata 混合列压缩使用列组织存储数据,这将相似的值紧密结合在一起并提高压缩率。

使用Exadata 混合列压缩,数据被组织成称为压缩单元的行集。在压缩单元内,数据按列组织,然后进行压缩。每行都独立于一个压缩单元内。

数据库操作对压缩对象透明地工作,因此不需要更改应用程序。数据库压缩由任何 SQL 操作操作的数据,尽管直接路径加载的压缩级别更高。

您可以根据您的要求 指定以下类型的Exadata 混合列压缩:

  • 仓库压缩:这种类型的压缩针对查询性能进行了优化,适用于数据仓库应用程序。
  • 存档压缩:这种类型的压缩针对最大压缩级别进行了优化,适用于历史数据和不会更改的数据。

假设您将Exadata 混合列压缩应用于daily_sales表。每天结束时,表中都会填充商品和销售数量,商品 ID 和日期构成复合主键。行子集如下表所示。

表 1-1 示例表 daily_sales

商品ID 日期 已售数量 发货地址 补货

1000

07年6月1日

2

仓库1

1001

07年6月1日

0

仓库3

1002

07年6月1日

1

仓库3

1003

07年6月1日

0

仓库2

1004

07年6月1日

2

仓库1

1005

07年6月1日

1

仓库2

数据库在称为压缩单元的内部结构中存储一组行。例如,假设上一个表中的行存储在一个单元中。Exadata 混合列压缩存储第 4 列中的每个唯一值以及将这些值映射到行的元数据。从概念上讲,压缩值可以表示为:

WAREHOUSE1WAREHOUSE3WAREHOUSE2

然后,数据库WAREHOUSE通过存储一次并用引用替换每个出现的单词来压缩该值中的重复单词。如果引用小于原始单词,则数据库实现压缩。Date对于仅包含一个唯一值的列来说, 压缩优势尤其明显。

如下图所示,每个压缩单元可以跨越多个数据块。特定列的值可能会也可能不会跨越多个块。

图 1-1 压缩单元

Oracle Exadata 系统软件概述-1
“图1-1压缩单元”说明

Exadata 混合列压缩对行锁定有影响。当未压缩数据块中的行发生更新时,仅锁定更新的行。相反,如果对压缩单元中的任何行进行更新,数据库必须锁定压缩单元中的所有行。使用Exadata 混合列压缩对行进行更新会导致 rowid 发生更改。

Oracle 数据库支持四种表压缩方法。

表1-2 表压缩方法

表压缩方法 压缩级别 CPU开销 应用领域

基本压缩

高的

最小

决策支持系统

OLTP压缩

高的

最小

联机事务处理、决策支持系统

仓库压缩

更高(压缩级别取决于指定的压缩级别(低或高))

较高(CPU 开销取决于指定的压缩级别(低或高))

决策支持系统

档案压缩

最高(压缩级别取决于指定的压缩级别(低或高))

最高(CPU 开销取决于指定的压缩级别(低或高))

归档

仓库压缩和归档压缩实现了最高的压缩级别,因为它们使用Exadata 混合列压缩技术。Exadata 混合列压缩技术使用修改形式的列存储而不是行主存储。这使得数据库能够将相似的数据存储在一起,从而提高了压缩算法的有效性。由于Exadata 混合列压缩需要较高的 DML CPU 开销,因此仅将其用于不经常更新的数据。

Exadata 混合列压缩的更高压缩级别只能通过直接路径插入的数据来实现。支持传统的插入和更新,但会导致格式压缩程度较低,并降低压缩级别。

下表列出了每种表压缩方法的特征。

表 1-3 表压缩特性

表压缩方法 创建/更改表语法 直接路径插入 数据管理语言

基本压缩

COMPRESS [BASIC]

COMPRESS并且COMPRESS BASIC是等价的

是的

是的

注意:插入和更新的行未压缩。

OLTP压缩

COMPRESS FOR OLTP

是的

是的

仓库压缩

COMPRESS FOR QUERY [LOW|HIGH]

是的

是的

CPU 开销高。

注意:插入和更新的行将进入压缩格式较少且压缩级别较低的块。

档案压缩

COMPRESS FOR ARCHIVE [LOW|HIGH]

是的

是的

注意:插入和更新的行未压缩。插入和更新的行将进入压缩格式较少且压缩级别较低的块。

COMPRESS FOR QUERY HIGH选项是默认的数据仓库压缩模式。它提供了良好的压缩和性能。该COMPRESS FOR QUERY LOW选项应用于负载性能至关重要的环境中。它的加载速度比使用该COMPRESS FOR QUERY HIGH选项压缩的数据更快。

COMPRESS FOR ARCHIVE LOW选项是默认的存档压缩模式。它提供了高压缩级别和良好的查询性能。它非常适合不经常访问的数据。该COMPRESS FOR ARCHIVE HIGH选项应用于很少访问的数据。

该包提供的压缩顾问DBMS_COMPRESSION可帮助您确定采用特定压缩方法的特定表的预期压缩级别。

COMPRESS您可以使用命令的子句指定表压缩CREATE TABLE。您可以通过在语句中使用这些子句来启用现有表的压缩ALTER TABLE。在这种情况下,启用压缩后,只有插入或更新的数据才会被压缩。ALTER TABLE同样,您可以使用...命令禁用现有压缩表的表压缩NOCOMPRESS。在这种情况下,所有已压缩的数据仍保持压缩状态,并且新数据将不压缩地插入。

  • 内存列格式支持
    在Oracle Exadata环境中,当需要提高性能时,数据会自动以内存列格式存储在闪存缓存中。

内存中列格式支持

在Oracle Exadata环境中,当需要提高性能时,数据会自动以内存中列格式存储在闪存缓存中。

Oracle Exadata支持所有内存优化,例如仅访问所需的压缩列、SIMD 向量处理、存储索引等。

如果将INMEMORY_SIZE数据库初始化参数设置为非零值(需要 Oracle Database In-Memory 选项),则使用智能扫描访问的对象将被带入闪存缓存并自动转换为 In-Memory 列格式。数据最初转换为列式缓存格式,这与 Oracle Database In-Memory 的列式格式不同。数据在后台重写为 Oracle Database In-Memory 列格式。因此,当从闪存缓存检索数据时,对数据的所有后续访问都会受益于所有内存优化。

Oracle Exadata 系统软件概述-2
插图 flash-cache-extends-memory-db.eps 的说明

对内存表的任何写入不会使该表的整个列式缓存失效。它只会使块所在磁盘区域的列式缓存单元失效。对于表更新后的后续扫描,表的很大一部分仍然在列式缓存中。扫描仍然可以使用列式缓存,但进行写入的单元除外。对于这些单元,查询使用原始块版本来获取数据。经过足够次数的扫描后,失效的列式缓存单元会自动以列式格式重新填充。

还引入了新的段级属性 ,CELLMEMORY以帮助控制哪些对象不应使用内存中列格式填充到闪存中以及应使用哪种类型的压缩。就像INMEMORY属性一样,您可以指定不同的压缩级别作为CELLMEMORY属性的子条款。然而,并非所有INMEMORY压缩级别都可用;仅MEMCOMPRESS FOR QUERY LOWMEMCOMPRESS FOR CAPACITY LOW(默认)。您可以CELLMEMORY使用 SQL 命令指定属性,如下所示:

ALTER TABLE trades CELLMEMORY MEMCOMPRESS FOR QUERY LOW

Oracle Database In-Memory 中可用的子条款PRIORTY不适用于Oracle Exadata,因为在 Exadata 存储服务器上填充闪存缓存的过程与在 Oracle 数据库服务器上的 In-Memory 列存储中填充 DRAM 的过程不同。

  • 卸载数据搜索和检索处理
    Exadata Smart Scan将搜索和检索处理卸载到存储服务器。

卸载数据搜索和检索处理

Exadata智能扫描将搜索和检索处理卸载到存储服务器。

智能扫描在Oracle Exadata 存储服务器内执行选定的Oracle 数据库功能。此功能通过最大限度地减少数据库服务器 I/O 量来提高查询性能,从而减少数据库服务器和存储服务器之间与 I/O 相关的通信量。此外,智能扫描节省的数据库服务器CPU可用于提高整体系统吞吐量。

智能扫描自动优化使用Direct Path Read机制的全表扫描、快速全索引扫描和快速全位图索引扫描,即并行操作和大顺序扫描。Oracle Exadata 存储服务器内的智能扫描执行的主要功能是:

  • 谓词过滤

    云安全扫描谓词过滤不是将所有行传输到数据库服务器进行谓词评估,而是确保数据库服务器仅接收与查询条件匹配的行。支持的条件运算符包括=!==IS [NOT] NULLLIKE[NOT] BETWEEN, , [NOT] INEXISTSIS OF typeNOTANDOR。此外,Exadata 存储服务器在谓词过滤期间评估最常见的 SQL 函数。

  • 列过滤

    云安全扫描列过滤不是将整行传输到数据库服务器,而是确保数据库服务器仅接收请求的列。对于具有许多列或包含 LOB 的列的表,列过滤节省的 I/O 带宽可能非常可观。

例如,考虑一个简单的查询:

SQL> SELECT customer_name FROM calls WHERE amount > 200;

在这种情况下,智能扫描将谓词过滤 ( WHERE amount > 200) 和列过滤 ( SELECT customer_name) 卸载到 Exadata 存储服务器。根据表的大小、结构和内容,效果可能会很显着。例如,如果表包含1TB数据,但查询结果只有2MB,则仅从存储服务器和数据库服务器传输2MB数据。

下图说明了云安全扫描如何避免存储服务器和数据库服务器之间不必要的数据传输。

图 1-2 卸载数据搜索和检索

Oracle Exadata 系统软件概述-3
“图1-2 卸载数据搜索与检索”说明

除了卸载谓词过滤和列过滤之外,智能扫描还可以:

  • 优化星型模式的连接处理(大型表和小型查找表之间)。这是使用布隆过滤器实现的,它提供了一种非常有效的概率方法来确定元素是否是集合的成员。

  • 优化对加密表空间和加密列的扫描。对于加密表空间,Exadata存储服务器可以解密块并将解密的块返回到Oracle数据库,也可以对加密数据进行行和列过滤。通过将 CPU 密集型解密任务卸载到 Exadata 单元,可以在数据库服务器内显着节省 CPU。

  • 优化对压缩数据的扫描。智能扫描与混合列压缩结合使用,以便在 Exadata 存储服务器中运行列投影、行过滤和解压缩,以节省数据库服务器上的 CPU 周期。

  • 卸载数据挖掘模型的评分函数,例如PREDICTION_PROBABILITY。这可以加速分析,同时减少数据库服务器 CPU 消耗以及数据库服务器和存储服务器之间的 I/O 负载。

  • 卸载增量备份处理
    为了优化增量备份的性能,数据库可以将块过滤卸载到Oracle Exadata 存储服务器。

增量备份处理的卸载

为了优化增量备份的性能,数据库可以将块过滤卸载到Oracle Exadata 存储服务器。

仅当使用Oracle Recovery Manager (RMAN)进行备份时才可以进行此优化。卸载处理是透明完成的,无需用户干预。在卸载处理期间,Oracle Exadata 系统软件会过滤掉正在进行的增量备份不需要的块。因此,只有备份所需的块才会发送到数据库,从而使备份速度显着加快。

  • 通过隔离进行故障隔离
    Oracle Exadata 系统软件能够从过去的事件中学习以避免错误。

隔离故障隔离

Oracle Exadata 系统软件能够从过去的事件中学习以避免错误。

当错误的 SQL 语句过去导致服务器崩溃时,Oracle Exadata 系统软件会隔离该 SQL 语句,以便当错误的 SQL 语句再次出现时,Oracle Exadata 系统软件不允许该 SQL 语句执行云安全扫描。这减少了服务器软件崩溃的机会,并提高了存储可用性。可以使用以下类型的隔离:

  • SQL 计划:在对 SQL 语句执行智能扫描时Oracle Exadata 系统软件崩溃时创建。因此,该 SQL 语句的 SQL 计划将被隔离,并且该 SQL 计划的云安全扫描将被禁用。

  • 磁盘区域:Oracle Exadata 系统软件在对磁盘区域执行智能扫描时崩溃时创建。因此,正在扫描的 1 MB 磁盘区域将被隔离,并且对该磁盘区域禁用云扫描。

  • 数据库:当Oracle Exadata 系统软件检测到特定数据库导致单元不稳定时创建。不稳定检测基于数据库的 SQL 计划隔离区的数量。对数据库禁用智能扫描。

  • 单元卸载:当Oracle Exadata 系统软件检测到某些卸载功能导致单元不稳定时创建。不稳定检测基于单元的数据库隔离区数量。对所有数据库禁用智能扫描。

  • 数据库内计划:当Oracle Exadata 系统软件在处理数据库内资源计划时崩溃时创建。因此,数据库内资源计划被隔离并且不被强制执行。同一数据库中的其他数据库内资源计划仍会强制执行。其他数据库中的数据库内资源计划不受影响。

  • 数据库间计划:当Oracle Exadata 系统软件在处理数据库间资源计划时崩溃时创建。因此,数据库间资源计划被隔离并且不被强制执行。其他数据库间资源计划仍然执行。

  • I/O 资源管理 (IORM):当Oracle Exadata 系统软件在 I/O 处理代码路径中崩溃时创建。通过将 IORM 目标设置为 来有效禁用 IORM,basic并且忽略所有资源计划。

  • 单元到单元卸载:请参阅“隔离管理器对单元到单元卸载操作的支持”。

创建隔离区后,警报会通知管理员隔离的内容、创建隔离区的原因、手动删除隔离区的时间和方式以及自动删除隔离区的时间。当单元被修补或升级时,所有隔离区都会自动删除。

CellCLI命令用于手动操作隔离区。例如,管理员可以手动创建隔离区、删除隔离区、更改隔离区属性以及列出隔离区。

隔离管理器对单元到单元卸载操作的支持

从Oracle Exadata 系统软件12.2.1.1.0开始 ,为支持 ASM 重新平衡和高吞吐量写入的单元到单元卸载操作提供隔离管理器支持。如果 Exadata 在这些操作期间检测到崩溃,则会隔离有问题的操作,并且 Exadata 会回退到使用非卸载操作。

这些类型的隔离很可能是由不兼容的 CELLSRV 版本引起的。如果您的系统上发生此类隔离,请联系 Oracle 支持服务。

要识别这些类型的隔离,请运行LIST QUARANTINE DETAIL命令并检查属性的值quarantineType。与这些隔离相关的值为ASM_OFFLOAD_REBALANCE和 HIGH_THROUGHPUT_WRITE

以下是该命令生成的一些输出示例LIST QUARANTINE

对于 ASM 重新平衡:

CellCLI> list quarantine detail
name: 2
asmClusterId: b6063030c0ffef8dffcc99bd18b91a62
cellsrvChecksum: 9f98483ef351a1352d567ebb1ca8aeab
clientPID: 10308
comment: None
crashReason: ORA-600[CacheGet::process:C2C_OFFLOAD_CACHEGET_CRASH]
creationTime: 2016-06-23T22:33:30-07:00
dbUniqueID: 0
dbUniqueName: UnknownDBName
incidentID: 1
quarantineMode: "FULL Quarantine"
quarantinePlan: SYSTEM
quarantineReason: Crash
quarantineType: ASM_OFFLOAD_REBALANCE
remoteHostName: slc10vwt
rpmVersion: OSS_MAIN_LINUX.X64_160623

对于源自非容器数据库的高吞吐量写入:

CellCLI> list quarantine detail
name: 10
asmClusterId: b6063030c0ffef8dffcc99bd18b91a62
cellsrvChecksum: 9f98483ef351a1352d567ebb1ca8aeab
clientPID: 8377
comment: None
crashReason: ORA-600[CacheGet::process:C2C_OFFLOAD_CACHEGET_CRASH]
creationTime: 2016-06-23T23:47:01-07:00
conDbUniqueID: 0
conDbUniqueName: UnknownDBName
dbUniqueID: 4263312973
dbUniqueName: WRITES
incidentID: 25
quarantineMode: "FULL Quarantine"
quarantinePlan: SYSTEM
quarantineReason: Crash
quarantineType: HIGH_THROUGHPUT_WRITE
remoteHostName: slc10vwt
rpmVersion: OSS_MAIN_LINUX.X64_160623

对于源自容器数据库 (CDB) 的高吞吐量写入:

CellCLI> list quarantine detail
name: 10
asmClusterId: eff096e82317ff87bfb2ee163731f7f7
cellsrvChecksum: 9f98483ef351a1352d567ebb1ca8aeab
clientPID: 17206
comment: None
crashReason: ORA-600[CacheGet::process:C2C_OFFLOAD_CACHEGET_CRASH]
creationTime: 2016-06-24T12:59:06-07:00
conDbUniqueID: 4263312973
conDbUniqueName: WRITES
dbUniqueID: 0
dbUniqueName: UnknownDBName
incidentID: 25
quarantineMode: "FULL Quarantine"
quarantinePlan: SYSTEM
quarantineReason: Crash
quarantineType: HIGH_THROUGHPUT_WRITE
remoteHostName: slc10vwt
rpmVersion: OSS_MAIN_LINUX.X64_160623

  • 防止数据损坏
    数据损坏虽然很少见,但可能会对数据库乃至业务产生灾难性影响。

防止数据损坏

数据损坏虽然很少见,但可能会对数据库乃至业务产生灾难性影响。

Oracle Exadata 系统软件通过保护业务数据而不仅仅是物理数据,将数据保护提升到一个新的水平。

检测和防止数据损坏的关键方法是块检查,其中存储子系统验证 Oracle 块内容。Oracle 数据库验证数据库块并向其添加保护信息,而Oracle Exadata 系统软件则检测数据库和存储之间的 I/O 路径中引入的损坏。存储服务器阻止将损坏的数据写入磁盘。这消除了数据库行业以前无法预防的一大类故障。

与其他损坏检查实现不同,Oracle Exadata 系统软件的检查操作完全透明。数据库层或存储层无需设置任何参数。这些检查透明地处理所有情况,包括Oracle 自动存储管理 (Oracle ASM)磁盘重新平衡操作和磁盘故障。

  • 快速文件创建
    文件创建操作被卸载到 Oracle Exadata 存储服务器。

快速文件创建

文件创建操作被卸载到 Oracle Exadata 存储服务器。

诸如 之类的操作CREATE TABLESPACE可以创建一个或多个文件,由于文件创建卸载,速度显着提高。

文件调整大小操作也被卸载到存储服务器,这对于自动扩展文件很重要。

  • 存储索引
    Oracle Exadata 存储服务器维护一个存储索引,其中包含磁盘上数据分布的摘要。

存储索引

Oracle Exadata 存储服务器维护一个存储索引,其中包含磁盘上数据分布的摘要。

存储索引是自动维护的,并且对Oracle数据库是透明的。它是内存区域索引的集合,在 Exadata 12.2.1.1.0 之前,每个区域索引最多可存储 8 列的摘要,从 Exadata 12.2.1.1.0 开始,每个区域索引最多可存储 24 列的摘要。如果使用集合摘要,则可能无法达到最大数量 24。每 1 MB 磁盘空间有一个区域索引。存储索引适用于任何非语言数据类型,并且与非语言索引类似的语言数据类型也适用。

每个区域索引维护表列的最小值和最大值。最小值和最大值用于消除不必要的 I/O,也称为I/O 过滤。 和视图Cell physical IO bytes saved by storage index中提供的统计信息显示使用存储索引保存的 I/O 字节数。一个区域索引中存储的内容独立于其他区域索引。这使得它们具有高度可扩展性,并避免闩锁争用。 V$SYS_STATV$SESSTAT

使用以下比较的查询通过存储索引得到改进:

  • 平等 (=)

  • 不等式()

  • 小于或等于 (=)

  • 一片空白

  • 不为空

Oracle Exadata 系统软件在使用大于区域中列的最大值或小于最小值的比较谓词进行查询后自动构建存储索引,如果存在存储索引,则会受益。Oracle Exadata 系统软件自动了解哪些存储索引将使查询受益,然后自动创建存储索引,以便后续类似的查询受益。

在 Oracle Exadata 系统软件版本 12.2.1.1.0 及更高版本中,当使用内存格式列式缓存存储数据时,Oracle Exadata 数据库云存储使用字典编码压缩的这些列。对于少于 200 个不同值的列,存储索引会创建字典的非常紧凑的内存中表示形式,并使用此紧凑表示形式根据相等谓词过滤磁盘读取。此功能称为集合成员资格。更有限的过滤能力最多可扩展到 400 个不同的值。

例如,假设磁盘区域包含美国和加拿大的客户列表。当您运行查找墨西哥客户的查询时,Oracle Exadata 存储服务器可以使用新的集成员资格功能,通过过滤掉不包含墨西哥客户的磁盘区域来提高查询性能。在 12.2.1.1.0 之前的 Oracle Exadata 系统软件版本中,不具有设置成员资格功能,常规存储索引将无法过滤这些磁盘区域。

示例 1-1 使用存储索引消除磁盘 I/O

下图显示了表和区域索引。表中的值范围为 1 到 8。一个区域索引存储最小值 1,最大值 5。另一区域索引存储最小值 3,最大值 8。

Oracle Exadata 系统软件概述-4
插图示例的说明.png

对于诸如 之类的查询SELECT * FROM TABLE WHERE B= to_date ('2015-01-01', \
'YYY-MM-DD')

由于表是根据 Order_Date 列进行分区的,因此前面的查询避免了扫描表中不必要的分区。Ship_Date 上的查询不会从 Order_Date 分区中受益,但 Ship_Date 和 Order_Number 与 Order_Date 高度相关。存储索引利用通过分区或排序加载创建的顺序,并且可以将其与表中的其他列一起使用。这为 Ship_Date 和 Order_Number 列上的查询提供了类似于分区修剪的性能。示例 1-3 使用存储索引改进联接性能 使用存储索引允许表联接跳过不必要的 I/O 操作。例如,以下查询将执行 I/O 操作并将布隆过滤器仅应用于事实表的第一个块。

SELECT count(*) FROM fact, dim WHERE fact.m=dim.m AND dim.product="Hard drive"

Oracle Exadata 系统软件概述-5

事实表第二块的 I/O 被存储索引完全消除,因为其最小/最大范围 (5,8) 不存在于布隆过滤器中。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论