Exadata上SQL如何处理HCC压缩表?

上周有客户这样理解HCC压缩:为了降低存储到数据库的带宽占用,所以存储将HCC压缩过的所有数据传输到数据节点在进行解压缩,并且当采用了HCC压缩,则Exadata的智能扫描则无法使用,全部数据都需要在数据节点进行处理,全部消耗数据库节点的CPU?

但实际的上的原理并非如此,而是存储节点依然需要消耗CPU进行解压缩,并同时使用智能扫描和存储索引,具体处理过程如下

1. Exadata存储一次读取1MB的存储空间(通常HCC压缩单元是32K或64K,相当于一次读取32个或16个CU即压缩单元),在这个阶段可以使用存储索引进行过滤

2. Exadata存储将CU缓存

3. Exadata智能扫描来处理CU

a) 解压缩SQL查询where条件相关的一个字段,筛选该字段中符合条件的值,如果没有符合条件的则抛弃该CU,如果有则继续解压其余where条件相关字段,重复上述过程直至所有查询where条件字段处理完毕,获取到所有符合条件值(一次处理一个字段)

b)根据查询条件值,解压并过滤SQL需要的输出需要的字段

c)将符合条件的输出字段和where条件的字段重新打包压缩成CU返回给数据库节点

4. 数据库节点解压缩接受到的CU,继续进行处理,再返回最终结果给客户端

由上面的过程可以,Exadata平台在存储端和数据库端均需要进行解压缩工作,都需要消耗相应的CPU。

时间: 2024-10-10 16:29:52

Exadata上SQL如何处理HCC压缩表?的相关文章

7、SQL Server索引、表压缩

索引 什么是索引? 索引是一种磁盘上的数据结构,建立在表或视图的基础上.使用索引可以使数据的获取更快更高校,也会影响其他的一些性能,如插入或更新等. 索引主要分为两种类型:聚集索引和非聚集索引. 字典的目录就是一个索引,按照拼音查询想要的字就是聚集索引(物理连续,页码与目录一一对应),偏旁部首就是一个非聚集索引(逻辑连续,页码与目录不连续). 聚集索引存储记录是物理上连续存在的,而非聚集索引是逻辑上的连续,物理存储并不连续. 聚集索引一个表中只能有一个,而非聚集索引一个表中可以有多个. 索引的利

SQL Server索引、表压缩

什么是索引? 索引是一种磁盘上的数据结构,建立在表或视图的基础上.使用索引可以使数据的获取更快更高校,也会影响其他的一些性能,如插入或更新等. 索引主要分为两种类型:聚集索引和非聚集索引. 字典的目录就是一个索引,按照拼音查询想要的字就是聚集索引(物理连续,页码与目录一一对应),偏旁部首就是一个非聚集索引(逻辑连续,页码与目录不连续). 聚集索引存储记录是物理上连续存在的,而非聚集索引是逻辑上的连续,物理存储并不连续. 聚集索引一个表中只能有一个,而非聚集索引一个表中可以有多个. 索引的利弊 使

【SQL Server性能优化】SQL Server 2008该表压缩

当数据库是比较大的,而当你想备份,我们可以启动数据库备份压缩.这项由于备份文件比较小的压缩,所以整个备份的更快的速度,同时还低了磁盘空间的消耗. 当然还有一方面.肯定会添加cpu的消耗.只是一般的server都是多核.所以实际上对系统不会有大的影响. 事实上.不仅能够在备份的时候压缩,在SQL Server 2008中.我们还能够对表和索引进行压缩,以下通过压缩前.压缩后的比較.来展示SQL Server 2008强大的表及索引的压缩功能. 这里在公司測试数据库找了一个中型的表,共同拥有943万

【SQL Server性能优化】SQL Server 2008之表压缩

当数据库比较大,而要进行备份时,我们可以启动数据库备份的压缩,这样减少对于磁盘空间的消耗. 其实,不仅可以在备份的时候压缩,在SQL Server 2008中,我们还可以对表进行压缩,下面通过压缩前.压缩后的比较,来展示SQL Server 2008强大的表压缩功能. 这里在测试数据库找了一个较大的表,共有9439661 条记录, 1.压缩前表的大小 SP_SPACEUSED 'TB_WCB' /* name rows reserved data index_size unused TB_WCB

压缩表

Oracle压缩数据的处理基于数据库块,其本质上是通过消除在数据库块中的重复数据来实现空间节约,具体方法如下:比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol Table)中存储一份,在其他行或字段出现同样的数据时,只记录一个指向记号表中相关数据的指针. 创建压缩表: create table Name( ...... ) compress; alter table Name compress; alter table Name nocompress;

第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structured Query Language) SOL语句是和DBMS“交谈”专用的语言,不同的DBMS都认SQL语法. Sql中字符串使用单引号:通过写俩个单引号来转义一个单引号. Sql中的注释“——” 单行注释比较好 判断俩个数据是否相等使用=(单等号) 在sql语句中sql代码不区分大小写 SQL主要

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

SQL Server 索引和表体系结构(三)

原文:SQL Server 索引和表体系结构(三) 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引. 正文 创建包含

SQL Server中多表连接时驱动顺序对性能的影响

原文:SQL Server中多表连接时驱动顺序对性能的影响 本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 最近在SQL Server中多次遇到开发人员提交过来的有性能问题的SQL,其表面的原因是表之间去的驱动顺序造成的性能问题,具体表现在(已排除其他因素影响的情况下),存储过程偶发性的执行时间超出预期,甚至在调试的时候