Exadata Smart Scan 全面深度解析

在Exadata系统软件用户手册中,Smart Scan是放在条目“1.2.10 Offloading Data Search and Retrieval Processing”下的,所以Smart Scan的实际作用就是:卸载数据搜索和检索处理。

Smart Scan和Exadata Offload可以认为是同义词,因为Smart Scan是其中比较主要和重要的一部分。但严格来说,Offload的范围比Smart Scan略大一些,例如少数卸载功能如增量备份卸载就不属于Smart Scan的范畴。如果你看Exadata的AWR,还会看到Smart IO。这是一个更广的概念,涵盖所有与存储相关的优化。
所以,从涵盖范围看:
Smart IO > Offload > Smart Scan

下面这段文字揭示了几个要点:

Smart Scan performs selected Oracle Database functions inside Oracle Exadata Storage Server. This capability improves query performance by minimizing the amount of database server I/O, which reduces the amount of I/O-related communication between the database servers and storage servers. Furthermore, the database server CPU saved by Smart Scan is available to boost overall system throughput.

  1. Smart Scan发生在存储服务器
  2. Smart Scan的目的是提升查询性能
  3. Smart Scan减少了存储服务器和数据库服务器之间的I/O,并节省了数据库服务器的CPU

下面这段文字则说明了Smart Scan的先决条件:

Smart Scan automatically optimizes full table scans, fast full index scans, and fast full bitmap index scans that use the Direct Path Read mechanism, namely parallel operations and large sequential scans.

顾名思义,Smart Scan只对Scan(扫描)生效,包括全表扫描、快速全索引扫描和快速全位图索引扫描,并且必须使用Direct Path Read机制。

什么是Direct Path Read?按照这里的定义:

A direct read is a physical I/O from a data file that bypasses the buffer cache and reads the data block directly into process-private memory.

也就是说绕过了共享的SGA,直接读进独享的PGA。按照文档的说法,以下操作可能引发direct path read:

  • 执行 CREATE TABLE AS SELECT 语句
  • 执行 ALTER REBUILD 或 ALTER MOVE 语句
  • 从临时表空间读取
  • 并行查询
  • 从 LOB 段读取
  • Full Table Scan 或 Index Fast Full Scan (可能引发,但未必一定)

Smart Scan在存储服务器中主要做以下工作,都可以大幅减少存储服务器和数据库服务器之间的I/O:

  • 谓词过滤(Predicate Filtering)
    通过WHERE条件。以前需要将所有行传输到数据库服务器进行谓词评估,有了Exadata,一些谓词过滤操作在存储服务器中即可完成,这样数据库服务器仅接收符合查询条件的行。
  • 列过滤(Column Filtering)
    通过SELECT列表。以前需要返回完整的行,有了Exadata,只需访问指定的列。

一言以蔽之,Smart Scan在存储服务器而非数据库服务器中完成了(Row)Selection和(Column)Projection。

在这里插入图片描述

上图显示了从 Oracle Exadata 存储服务器选择和检索数据的过程。客户端输入查询 SELECT customer_name FROM calls WHERE amount > 200 并将其发送到数据库服务器。在数据库服务器上构建智能扫描并将其发送到存储服务器。智能扫描在存储层的TB级表中识确定与请求匹配的行和列。2 MB 数据子集将返回到数据库服务器。数据库服务器使用来自存储服务器的数据构建合并结果集,并仅将与查询匹配的数据返回给客户端。

除了卸载谓词过滤和列过滤之外,Smart Scan还支持:

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

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

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

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

你一定注意到,解密和解压缩是可以卸载到存储中进行的,而加密和压缩则不行。原因是:压缩和加密会改变行所在的数据库块,而数据库必须知道这一点,因此此操作不能放到存储层进行。而在解密或解压缩时,存储单元已经知道要读取哪些块,因此可以在存储中进行。

要启用Smart Scan,磁盘组中的所有磁盘都必须是 Oracle Exadata 存储服务器网格磁盘。您不能将常规磁盘与 Oracle Exadata 存储服务器网格磁盘一起包含在内。Smart Scan默认是打开的,可以设置cell.smart_scan_capable来关闭。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值