Oracle Exadata一体机与云计算应用(二)

3. Exadata主要技术3.1 单元分流

3.2 智能扫描

  智能扫描是 Exadata最重要的一个功能,它的作用就是把SQL 放在每个Cell 上去运行,然后每个Cell只返回符合条件的数据给数据库,这样就极大的降低了数据库服务器的负载和网络流量,并充分利用了Cell的计算资源和IO资源。  在传统 Oracle 数据库中,当用户选择一行甚至是一行中的单个列时,包含该行的整个数据块都会从磁盘读取到缓冲区缓存,然后从该数据块提取所选的行(在某些情况下是列)并将其提供给用户会话。在数据库云服务器中,大多数类型的访问都采用这一过程,但有几种非常重要的类型却不是这样。直接路径访问(例如全表扫描和全索引扫 描)的过程与此不同。数据库云服务器可以直接从磁盘提取特定行(或列)并将其发送到数据库节点。此功能称为“智能扫描”,可以极大地减少 I/O。  例如有 10 亿行数据,其中只有 1,000 行与您的查询相匹配,但传统数据库中的全表扫描会检索所有数据块并从中筛选出这些行。而智能扫描将只提取这 1,000 行(甚至是这些行中的特定列,如果所请求的是列的话)— 这可能减少 I/O 一千万倍!单元分流支持单元实现此操作。

  这里有一点要注意,在使用智能扫描时,每个Cell返回给DB Server的是结果集,而不再是传统的Block,数据库服务器完成结果集的处理,并返回给客户端。

3.3 存储索引  智能扫描如何实现只发送相关的行和列而不是块?这要归功于存储单元内部的数据模式上构建的特殊数据结构。对于特定段,会将该段的所有列的最小值、最大值以及是否存在空值的信息存储在磁盘上的指定区域(通常大小为 1MB)。此数据结构称为存储索引。  当单元收到来自数据库节点的支持智能扫描的查询时,它将检查存储的哪些区域不含相应数据。例如,如果查询谓词声明 where B = 1,则磁盘上列 B 的最小值和最大值分别为 3和8 的区域将肯定不会有任何匹配该谓词的行。因此单元将跳过不读取磁盘的该部分。通过检查存储索引,单元可排除不会包含该值的许多区域,因此可减少大量 I/O。  尽管存储索引在名称中有“索引”这个词,但它与普通索引完全不同。普通索引用于瞄准最有可能找到行的位置;存储索引则用于完全相反的目的 — 它关注的是最没可能找到行的位置。而且,与其他段不同,这些段不是存储在磁盘上;而是驻留在内存中。

3.4 混合列压缩

  首先我们要搞清楚,,什么是行压缩,什么叫列压缩。我们熟悉的数据库,如Oracle、MySQL等都是基于行的数据库,就是行的不同字段物理上存放在一起,还有一种是基于列的数据库,就是每个字段的不同行物理上存放在一起。他们的优缺点同样突出:  基于行的数据库,访问一行非常方便,但是由于同一列的数据是分开存放的,如果要针对某一列进行查询时,几乎要扫描整个表才能得到结果。基于行数据库的压缩,称为行压缩。  基于列的数据库,因为同一列的数据物理上放在一起,所以访问一列非常方便,也就是说如果针对某一列进行查询时,不需要扫描整个表,只需要扫描这一列的数据就可以了,但是访问一行的全部字段非常不方便。基于列数据库的压缩,称为列压缩。

  Oracle 通常说的 compress 功能(包括11g R2的Advanced compress),都是行压缩,因为Oracle是个基于行的数据库。大概的方法就是在block头部存放一个symbol table,然后将相同的值放在那里,每行上相同的数据指向symbol table,以此来达到压缩的目的。行压缩的效果通常不好,因为我们知道行与行之间,其实相同的数据并不多。但是列压缩则不同,因为相同列的数据类型相同,很容易达到很好的压缩效果。

  行压缩和列压缩都有其优缺点,而Oracle的混合列压缩技术,实际上是融合了列压缩的高压缩比和行数据库的访问特性,将两者的优点结合起来。Oracle提出了 CU 的概念(compress unit),在一个 CU 内,是一个基于列的存储方式,采用列压缩,但是一个 CU 内保存了行的所有字段信息,所以在CU与CU之间,Oracle还是一个基于行的数据库,访问某一行,总是只在一个 CU 内(一个CU总是在一个block内)。

  如上面的示意图,从高一层抽象上看,引入了一个新的叫做压缩单元(compression unit,cu)的结构用于存储混合列压缩的行的集合。新的数据载入后,列值追加到旧有的行集合的后面,然后进行排序与分组等操作后进行压缩。这一系列动作完成后,组成一个压缩单元。直接一点说,也就是对列存储做分段处理,而压缩单元用来维系不同分段之间的关系。有个特别之处是,要使用批量装载(Bulk Loading)的方式,对于已经存储的数据依然可以应用 DML 操作。而 Exadata 引擎对待已经存入的数据的策略是按需进行解压缩。

的这一半更多地赢取上帝掌握的那一半。

Oracle Exadata一体机与云计算应用(二)

相关文章:

你感兴趣的文章:

标签云: