精华内容
下载资源
问答
  • 大多数数据仓库查询都设计为遵循星型架构并且可以在单个查询中处理亿行。默认情况下,查询优化器可根据星型架构检测查询,并且可为这些查询创建有效的查询计划。优化器可用来生成有效计划的一种方法是使用位图筛选...

    大多数数据仓库查询都设计为遵循星型架构并且可以在单个查询中处理数亿行。默认情况下,查询优化器可根据星型架构检测查询,并且可为这些查询创建有效的查询计划。优化器可用来生成有效计划的一种方法是使用位图筛选。位图筛选器使用运算符树某部分的表中一组值的简洁表示形式来筛选位于该树另一部分的第二张表中的行。实际上,该筛选器执行半联接减法;即仅处理第二张表中符合到第一张表的联接要求的行。

    在 SQL Server 2008 中,可在优化后将位图筛选引入查询计划(这与在 SQL Server 2005 中一样),或者在查询计划生成期间通过查询优化器动态引入位图筛选。当动态引入筛选器时,此筛选器即被称为“已优化的位图筛选器”。优化的位图筛选可在查询计划早期删除事实数据表中不符合要求的行,从而明显提高使用星型架构的数据仓库查询的性能。如果不使用优化的位图筛选,将先通过运算符树的某部分来处理事实数据表中的所有行,然后通过维度表的联接操作删除不符合要求的行。应用优化的位图筛选后,将立即删除事实数据表中不符合要求的行。

    优化位图筛选功能仅在 SQL Server 的 Enterprise Edition、Developer Edition 和 Evaluation Edition 中提供。

     了解位图筛选
    与位图索引相比,位图筛选器更具优势。位图索引是表示值列表索引中的行 ID (RID) 列表的另一种形式,它使用一个或多个位矢量来指示表中的哪一行包含特定的列值。两者在从结果处理中删除不必要的行时都很有效,但是位图筛选器和位图索引之间存在一些重要的差异。首先,位图筛选器是内存中的结构,由于对基础表进行了数据操作语言 (DML) 操作,因此消除了所有的索引维护开销。此外,位图筛选器非常小,并且与现有的磁盘索引(通常取决于生成索引时所基于的表的大小)不同,可动态创建位图筛选器,而且对查询处理时间的影响可降到最低。

    比较位图筛选和优化的位图筛选
    通过使用 bitmap showplan 运算符可在查询计划中实现位图筛选和优化的位图筛选。位图筛选仅应用于使用哈希联接或合并联接的并行查询计划。优化的位图筛选只适用于使用哈希联接的并行查询计划。在这两种情况下,位图筛选器是在哈希联接的生成输入(维度表)侧创建的;但是,实际筛选通常是在 Parallelism 运算符内完成的,该运算符位于哈希联接的探测输入(事实数据表)侧。联接基于整数列时,筛选器可直接应用于初始表或索引扫描操作,而不是 Parallelism 运算符。这种方法称为“行内优化”。

    在经过优化之后将位图筛选引入查询计划,可减少查询编译时间;但是,优化器可考虑使用的查询计划会因此受限,并且不会考虑基数估计和开销估计。

    优化的位图筛选器具有以下优点:

    支持从多个维度表中进行筛选。

    可将多个筛选器应用到单个运算符。

    优化的位图筛选器可应用于多种运算符类型。这些运算符包括交换运算符,例如 Distribute Streams 和 Repartition Streams 运算符、table scan 或 index scan 运算符以及 filter 运算符。

    筛选适用于 SELECT 语句以及在 INSERT、UPDATE、DELETE 和 MERGE 语句中使用的只读运算符。

    筛选适用于在用于填充索引的运算符中创建索引视图。

    优化器使用基数估计和开销估计来确定优化的位图筛选是否合适。

    优化器可以支持多个计划。

    如何实现优化的位图筛选
    只有位图筛选器具有选择性时才有用。查询优化器将确定优化的位图筛选器何时具有足够的选择性以满足使用需求,以及该筛选器将应用于哪些运算符。该优化器将把优化的位图筛选器置于星型联接的所有分支上,并使用开销规则来确定此计划是否将提供最小的估计执行开销。当优化的位图筛选器不具有选择性时,开销估计值通常会很高,并且将放弃该计划。在考虑将优化的位图筛选器置于计划中的什么位置时,优化器将查找哈希联接变量,例如哈希联接的右深堆栈。实现与维度表的联接以首先执行选择性最大的联接。

    应用了优化的位图筛选器的运算符包含位图谓词,其格式为 PROBE([Opt_Bitmap1001], {[column_name]} [, 'IN ROW'])。位图谓词可报告以下信息:

    与 Bitmap 运算符中引入的名称对应的位图名称。前缀“Opt_”表示使用了优化的位图筛选器。

    探测的列。这是已筛选数据流过树时所经过的点。

    位图探测是否使用行内优化。如果使用行内优化,则使用 IN ROW 参数调用位图探测。否则将缺失此参数。

    示例
    下面的示例表示对简单星型架构的查询。以下两个维度表 DimProduct 和 DimCustomer 通过对单个整数列使用主键到外键联接从而联接到事实数据表 FactInternetSales。

     
    USE AdventureWorksDW;
    GO
    SELECT *
    FROM dbo.FactInternetSales AS F
    INNER JOIN dbo.DimProduct AS D1 ON F.ProductKey = D1.ProductKey
    INNER JOIN dbo.DimCustomer AS D2 ON F.CustomerKey = D2.CustomerKey
    WHERE D1.StandardCost <= 30 AND D2.YearlyIncome <= 50000;下图显示了此查询的执行计划,它与 SQL Server 2005 中显示的执行计划可能相同。在标记为 1A 的点上,已对维度表进行扫描,并且已知从事实数据表 (1B) 中筛选出不符合要求的行所需的信息。但是,Table Scan 运算符的属性显示没有使用任何谓词来限制从事实数据表中返回的行。


    与之相反,下图显示了同一查询的执行计划,它与 SQL Server 2008 中显示的执行计划可能相同。在这两个维度表的子树中使用了 Optimized bitmap 运算符。table scan 运算符的属性显示这些子树中的筛选器(位图探测)将直接应用于事实数据表树,从而在执行第一个联接操作之前限制从事实数据表中返回的行。


     优化的位图筛选的要求
    优化的位图筛选具有以下要求:

    事实数据表应至少有 100 页。优化器将较小的表视为维度表。

    只考虑事实数据表和维度表之间的内部联接。

    事实数据表和维度表之间的联接谓词必须是单个列联接,但不要求是主键到外键的关系。优先采用基于整数的列。

    只有维度输入基数小于事实数据表中的输入基数时,才考虑与维度的联接。

     

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-520795/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/16436858/viewspace-520795/

    展开全文
  • 前言随着大数据时代的到来,Hadoop几乎包揽了数据仓库和数据分析查询的工作。但是,对于轻量级的计算并不适合去使用Hadoop的MapReduce来做,因为MapReduce本身设计就是为了跑大数据而计算的。所以在计算过程中,会将...
    61a464f111b3703c2d8362a1bddaa055.gif

    前言

    随着大数据时代的到来,Hadoop几乎包揽了数据仓库和数据分析查询的工作。但是,对于轻量级的计算并不适合去使用Hadoop的MapReduce来做,因为MapReduce本身设计就是为了跑大数据而计算的。所以在计算过程中,会将数据进行分步骤计算,分步骤的结果会写到HDFS中,最后将各个步骤的结果汇总计算交给用户。在此过程中会大量的去硬盘中读写数据非常耗时。
    • MapReduce工作流程:
    6650cba052b5884bd3c9ad01a309f79a.png提到当前流行的hive,基本上大部分与大数据打交道的公司都会使用到hive。目前hive处理数据的特点:
    • data shuffle时网络瓶颈,Reduce要等Map结束才能开始,不能高效利用网络带宽
    • 一般一个SQL都会解析成多个MR job,Hadoop每次Job输出都直接写HDFS,性能差
    • 每次执行Job都要启动Task,花费很多时间,无法做到实时查询
    d55cb0789cbfccee7aa195bd90c1e097.png所以我们希望使用Hadoop去管理、分析数据时,能有一个不使用MapReduce分步计算,而是直接在内存中一步到位的轻量级计算程序,这就是impala存在的意义。 

    impala介绍

    Impala是处理存储在Hadoop集群中的大量数据的SQL查询引擎。它是由Java和C++实现的,Java提供的查询交互的接口和实现,C++实现了查询引擎部分。除此之外,Impala还能够共享Hive Metastore,甚至可以直接使用Hive的JDBC jar和beeline等直接对Impala进行查询、支持丰富的数据存储格式。f2a3213ab4b7bb183a771fe02fcd458b.png

    与其他Hadoop的SQL引擎相比,它提供了高性能低延迟,它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。

    使用Impala,与其他SQL引擎相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信,Impala可以读取Hadoop使用的几乎所有文件格式,如Parquet、Avro、RCFile。

    与Apache Hive不同,Impala不基于MapReduce算法。它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此,它减少了使用MapReduce的延迟,这使得Impala比Apache Hive快。

    • impala计算流程图:
     0423a8ea1da879edc6bcbdbf22b69d6f.png

    impala优劣

    01 优点

    • 基于内存进行计算,能够对PB级数据进行交互式实时查询、分析

    • 无需转换为MR,直接读取HDFS及Hbase数据 ,从而大大降低了延迟

    • 兼容HiveSQL,支持hive基本的一些查询等

    • 具有数据仓库的特性,可对hive数据直接做数据分析

    • 支持Data Local数据本地化,无需数据移动,减少数据的传输

    • 支持JDBC/ODBC远程访问

    • 使用impala,可以使用传统的SQL知识以极快的速度处理存储在HDFS中的数据

    02 不足

    • Impala不提供任何对序列化和反序列化的支持
    • Impala只能读取文本文件,而不能读取自定义二进制文件
    • 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新
    • 对内存依赖大,只在内存中计算,内存不够会报错
    • 需要依赖hive,从Hive元数据库中同步元数据,分发表的元数据信息到各个impala中
    • 稳定性不如hive
    总  结

    对数据进行批量处理时,impala不如hive稳定可靠,对数据进行实时查询时hive步骤繁琐速度不如impala。而impala是使用hive的元数据,所以我们可以在同一套数据中搭配hive和impala进行使用,Impala应对秒级的交互查询,Hive应对批量数据的分析。

    参考:https://www.cnblogs.com/laoqing/p/11362899.htmlhttps://blog.csdn.net/yu616568/article/details/52431835https://www.jianshu.com/p/917780978e8c e54d7e73cb68cf3f9400c22c3e9c29ab.png

    技术11期:对Flink Time和Watermark的理解

    84974b98f1b43e952282ef5b5d1f98ff.png

    本周回顾:全球首个纯机器人配送包裹;下载2GB文件只需20秒!

    想学习更多技术内容别忘了关注普适极客6cd79fe1eb8abda0a88c61ed90f0e7ed.png
    展开全文
  • 压缩数据以节省空间和提高速度作者:...在当今的环境下,存储着百TB(太字节)的数据仓库已经变得越来越普遍。 为了帮助处理磁盘容量问题,在Oracle9i第2版中引入了表压缩特性,它可以极大地减少数据库表所需要的磁盘

     

    压缩数据以节省空间和提高速度
    作者:Sanjay Mishra

    使用表压缩来节省空间并提高查询性能。

    很多决策支持系统通常都涉及到存储于几个特大表中的大量数据。随着这些系统的发展,对磁盘空间的需求也在快速增长。在当今的环境下,存储着数百TB(太字节)的数据仓库已经变得越来越普遍。

    为了帮助处理磁盘容量问题,在Oracle9i第2版中引入了表压缩特性,它可以极大地减少数据库表所需要的磁盘空间数量,并在某些情况下提高查询性能。

    在本文中,我将向你说明表压缩是如何工作的,以及在构建和管理数据库时如何配置表空间。我还将基于一些示例测试结构讨论一些性能问题,以帮助你了解使用表压缩预计能获得多大好处。

    表压缩是如何工作的

    在Orcle9i第2版中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数据库的数据块级别上进行的。当确定一个表要被压缩后, 数据库便在每一个数据库数据块中保留空间,以便储存在该数据块中的多个位置上出现的数据的单一拷贝。这一被保留的空间被称作符号表(symbol table)。被标识为要进行压缩的数据只存储在该符号表中,而不是在数据库行本身内。当在一个数据库行中出现被标识为要压缩的数据时,该行在该符号表中 存储一个指向相关数据的指针,而不是数据本身。节约空间是通过删除表中数据值的冗余拷贝而实现的。

    对于用户或应用程序开发人员来说,表压缩的效果是透明的。无论表是否被压缩,开发人员访问表的方式都是相同的,所以当你决定压缩一个表时,不需要修改SQL查询。表压缩的设置通常由数据库管理人员或设计人员进行配置,几乎不需要开发人员或用户参与。

    如何创建一个压缩的表

    要创建一个压缩的表,可在CREATE TABLE语句中使用COMPRESS关键字。COMPRESS关键字指示Oracle数据库尽可能以压缩的格式存储该表中的行。下面是CREATE TABLE COMPRESS语句的一个实例:

    CREATE TABLE SALES_HISTORY_COMP (
    PART_ID VARCHAR2(50) NOT NULL,
    STORE_ID VARCHAR2(50) NOT NULL,
    SALE_DATE DATE NOT NULL,
    QUANTITY NUMBER(10,2) NOT NULL
    )
    COMPRESS

    ;

    或者,你可以用ALTER TABLE语句来修改已有表的压缩属性,如下所示:

    ALTER TABLE SALES_HISTORY_COMP COMPRESS;

    为了确定是否已经利用COMPRESS对一个表进行了定义,可查询USER_TABLES数据字典视图并查看COMPRESSION列,如下面的例子所示:

    SELECT TABLE_NAME, COMPRESSION FROM USER_TABLES;

    TABLE_NAME COMPRESSION
    ------------------ -----------
    SALES_HISTORY DISABLED

    SALES_HISTORY_COMP ENABLED

    也可以在表空间级别上定义COMPRESS属性,既可以在生成时 利用CREATE TABLESPACE来定义,也可以稍后时间利用ALTER TABLESPACE来定义。与其他存储参数类似,COMPRESS属性也具有一些继承特性。当在一个表空间中创建一个表时,它从该表空间继承 COMPRESS属性。为了确定是否已经利用COMPRESS对一个表空间进行了定义,可查询USER_TABLESPACES数据字典视图并查看 DEF_TAB_COMPRESSION列,如下面的例子所示:

    SELECT TABLESPACE_NAME, 
    DEF_TAB_COMPRESSION
    FROM DBA_TABLESPACES;

    TABLESPACE_NAME DEF_TAB_COMPRESSION
    --------------- -------------------
    DATA_TS_01 DISABLED
    INDEX_TS_01 DISABLED

    正如你所预计的那样,你可以在一个表空间直接压缩或解压缩一个表,而不用考虑表空间级别上的COMPRESS属性。

    向一个压缩的表中加载数据

    请注意,当你像上面那样指定COMPRESS时,你并没在实际压缩任何数据。上面的这些命令只是修改了一个数据字典的设置。只有你向一个表中加载或插入数据时才会实际压缩数据。

    而且,为了确保数据被实际压缩,你需要利用一种正确的方法将数据加载或插入到表中。只有在利用以下4种方法之一批量加载或批量插入过程中才会进行数据压缩:

    • 直接路径SQL*Loader
    • 带有APPEND提示的串行INSERT
    • 并行INSERT
    • CREATE TABLE ... AS SELECT

    如果在一个平面文件中有输入数据是可用的,那么直接路径SQL*Loader方法是将这些输入数据加载至一个表格中最方便的手段。下面给出一个示例:

    $sqlldr sanjay/sanjay@proddb control=sales_history.ctl direct=true

    如果在一个登台表中有输入数据,那么你可以使用带有APPEND提示的串行INSERT方法或者并行INSERT方法。

    作为一个例子,请看一个名为SALES_HISTORY的未压缩登台表中的可用输入数据。用串行INSERT方法时,你可以使用以下的语句向已压缩表中插入数据:

    INSERT /*+ APPEND */ 

    INTO SALES_HISTORY_COMP
    SELECT * FROM SALES_HISTORY;

    或者,你也可以用并行INSERT方法将数据由一个登台表转移到一个已压缩表中,如下所示:

    ALTER SESSION ENABLE PARALLEL DML;

    INSERT /*+PARALLEL(SALES_HISTORY_COMP,4)*/
    INTO SALES_HISTORY_COMP
    SELECT * FROM SALES_HISTORY;

    请注意,在使用并行INSERT方法时,你需要首先利用ALTER SESSION ENABLE PARALLEL DML命令为会话期来启动并行DML。

    如果输入数据位于一个平面文件中,那么你也可以使用一个外部表,然后将这些数据插入到一个压缩表中,就像这些数据放在一个登台表中可用一样。(对外部表的讨论超出了本文的范围)。

    你还可以使用CREATE TABLE ... AS SELECT语句一次生成一个压缩表,并将数据插入至其中。 这里有一个例子:

    CREATE TABLE SALES_HISTORY_COMP
    COMPRESS
    AS SELECT * FROM SALES_HISTORY;

    如果你没有使用正确的加载或INSERT方法,那么即使使用COMPRESS对表格进行了定义,该表中的数据也将仍然保持未压缩状态。 例如,如果你使用惯用路径SQL*Loader或正则INSERT语句,那么数据仍然是未压缩的。

    什么时候使用表压缩

    Oracle 数据库选择用来压缩表数据或不压缩表数据的方式已暗中牵涉到了最适合于表压缩的应用程序。如上所述,一个表中已被使用COMPRESS定义的数据,只有在 使用直接路径模式被加载或利用添加(append)或并行模式被插入时,才会得到压缩。通过正则插入语句插入的数据将保持未压缩状态。

    在在线事务处理(OLTP)系统中,通常是使用正则插入模式来插入数据的。因此,使用表压缩通常不会使这些表格获得太大的好处。 表压缩对于那些只加载一次但多次读取的只读表格具有最佳效果。例如,数据仓库应用程序中所用的表格特别适合于进行表压缩。

    此外,在一个已压缩表中更新数据可能要求数据行为非压缩的,这样就达不到进行压缩的目的。因此,那些需要经常进行更新操作的表不适于进行表压缩。

    最 后,让我们来看一下行删除对表压缩应用的影响。当你删除一个压缩的表中的一行时,数据库将释放该行在数据库数据块中所占据的空间。 这一自由空间可以由未来插入的数据重新使用。但是,由于以惯用模式插入的行不能被压缩,所以它不太可能适合放在一个被压缩的行所释放的空间。大量的相继的 DELETE与INSERT语句可能会导致磁盘碎片,且所浪费的空间甚至会多于使用压缩所能节省的空间。

    压缩一个已有的未压缩表

    如果你有一个已有的未压缩表,那么你可以利用ALTER... MOVE语句对其进行压缩。例如,可以利用以下方法对一个名为SALES_HISTORY_TEMP的未压缩表进行压缩:

    ALTER TABLE SALES_HISTORY_TEMP 
    MOVE COMPRESS;

    你也可以将ALTER TABLE ...MOVE语句用于解压缩一个表,如下例所示:

    ALTER TABLE SALES_HISTORY_TEMP 
    MOVE NOCOMPRESS;

    请注意,ALTER TABLE ...MOVE操作会获得一个对该表操作的EXCLUSIVE锁,它可以在该语句执行过程中禁止对该表进行任何DML操作。你可以利用Oracle9i数据库的在线表重定义特性来避免这一可能出现的问题。

    压缩一个物化视图

    你可以使用用于压缩表的类似方式来压缩物化视图。下面的命令生成一个压缩的物化视图:

    CREATE MATERIALIZED VIEW MV_SALES_COMP
    COMPRESS
    AS SELECT P.PART_NAME, H.STORE_ID, H.SALE_DATE, H.QUANTITY
    FROM SALES_HISTORY H, PARTS P
    WHERE P.PART_ID = H.PART_ID;

    基于多个表的联接生成的物化视图通常很适于压缩,因为它们通常拥有大量的重复数据项。你可以使用ALTER MATERIALIZED VIEW命令来改变一个物化视图的压缩属性。下面的命令显示了如何压缩一个已有的未压缩的物化视图。

    ALTER MATERIALIZED VIEW MV_SALES COMPRESS;

    当你使用此命令时,请注意通常是在下一次刷新该物化视图时才会进行实际的压缩。

    压缩一个已分区的表

    在对已分区的表应用压缩时,可以有很多种选择。你可以在表级别上应用压缩,也可以在分区级别上应用压缩。例如,代码清单 1中的CREATE TABLE语句创建一个具有4个分区的表。 由于是在表级别指定了COMPRESS,所以对全部4个分区都进行压缩。

    由于可以在分区级别上指定压缩属性,所以你可以选择压缩某些分区,而使另一些分区保持未压缩状态。代码清单 2中的示例说明了如何在分区级别上指定压缩属性。

    代码清单 2中,压缩了两个表分区(SALES_Q1_03和SALES_Q2_03) ,而另外两个分区未被压缩。要注意,在分区级别上指定的压缩属性会取代对该分区在表级别上特定的压缩属性。如果未为一个分区指定压缩属性,那么该分区将继承在表级别上指定的压缩属性。在代码清单 2中,由于未对分区SALES_Q3_03和SALES_Q4_03指定压缩属性,所以这两个分区继承表级别上指定的属性值(在本例情况下为默认的NOCOMPRESS)。

    在通过压缩来使用已分区的表时,它可以提供一个独特的好处。对表进行分区的一个非常有用的方法是将要对其进行DML操作(插入、更新与删除)的数据放入与只读文件分开的分区内。例如,在代码清单 2的表定义中,根据SALE_DATE对销售数据进行了分区,这样可将每一季度的销售历史数据存储在一个单独的分区内。在此示例中,2003年第1、2季度的销售数据不能被修改,所以将它们置于压缩分区SALES_Q1_03 和SALES_Q2_03中。对于第3、4季度的销售数据仍可以进行修改,所以相应的分区SALES_Q3_03和SALES_Q4_03保持未压缩状态。

    如果在2003年第3季度末,SALES_Q3_03分区中的数据变为只读的,那么你可以利用ALTER TABLE ...MOVE PARTITION命令对此分区进行压缩,如下面的语句所示:

    ALTER TABLE SALES_PART_COMP 
    MOVE PARTITION SALES_Q3_03 COMPRESS;

    要找出一个表中的哪些分区被压缩了,可以查询数据字典视图USER_TAB_PARTITIONS,如下例所示:

    SELECT TABLE_NAME, PARTITION_NAME, 
    COMPRESSION

    FROM USER_TAB_PARTITIONS;

    TABLE_NAME PARTITION_NAME COMPRESSION
    ---------------------------- -----------
    SALES_PART_COMP SALES_Q4_03 DISABLED
    SALES_PART_COMP SALES_Q1_03 ENABLED
    SALES_PART_COMP SALES_Q2_03 ENABLED
    SALES_PART_COMP SALES_Q3_03 ENABLED

    定量地评价压缩带来的好处

    下一步

    阅读关于表压缩的更多内容
    Oracle9i数据仓库指南
    Oracle9i数据库管理员指南

    Oracle9i第2版中的表压缩:"性能分析"

    使 用表压缩的最主要原因是要节省存储空间。压缩形式的表所占用的空间通常小于其非压缩形式所占用的空间。为了说明这一点,可考虑以下测试,其中有两个表-- 一个是未压缩的(SALES_HISTORY),一个是压缩的(SALES_HISTORY_COMP)。这两个表都是利用直接路径SQL*Loader 由一个包含有200万行的单一平面文件加载的。在完成了对两个表的数据加载后,压缩的表所占用的空间差不多是未压缩表的一半。代码清单 3显示了分析结果。

    一个压缩的表可以存储在更少的数据块中,从而节省了储存空间,而使用更少的数据块也意味着性能的提高。 在一个I/O受到一定限制的环境中对一个压缩的表进行查询通常可以更快速地完成,因为他们需要阅读的数据库数据块要少得多。为了说明这一点,我对一个压缩的表和一个未压缩的表进行查询,并执行一个SQLTRACE/TKPROF分析。代码清单 4显示了该分析结果。

    SQLTRACE/TKPROF报告表明:我对该压缩表执行的物理和逻辑I/O操作相对于对非压缩表进行的相应查询要少得多,因而执行得也更快得多。

    性能开销

    由 于表压缩是在批量加载时进行的,所以数据加载操作会因涉及附加的内务操作而需要额外的处理工作。为了衡量压缩对性能的影响,我进行了一个测试,在该测试 中,我向两个相同的表中(一个压缩的表,另一个未压缩的表)加载了(利用直接路径SQL*Loader)100万行数据。表 1显示了由SQL*Loader日志文件中取出的结果,它们给出了向这两个压缩的与非压缩的表中加载数据花费了多少时间。

    表名 行数 路径 是否是压缩的 消耗的时间
    SALES_HISTORY 1000000 直接 非压缩的 00:00:21.12
    SALES_HISTORY_COMP 1000000 直接 压缩的 00:00:47.77
    表1:比较未压缩的表与压缩的表的加载时间

    加载压缩的表所需要的额外时间源自在数据加载过程中所执行的压缩操作。在实际情况下,实际时间差取决于表的设计与给定环境下的数据的布局。

    展开全文
  • 因此,至关重要的是,数据仓库系统要支持高校的数据立方体技术、存取方法和处理技术。本节,我们主要关注的是数据仓库的有效实现方法。 数据立方体的有效计算 索引OLAP数据:位图索引和链接索引 OLAP查询的有效处理...

    1. 数据仓库的实现

    1.1 数据仓库的基本内容
    数据仓库包含海量数据。OLAP服务器要在数秒内回答决策支持查询。因此,至关重要的是,数据仓库系统要支持高校的数据立方体技术、存取方法和处理技术。本节,我们主要关注的是数据仓库的有效实现方法。

    • 数据立方体的有效计算
    • 索引OLAP数据:位图索引和链接索引
    • OLAP查询的有效处理
    • OPAP的服务器结构

    2 数据立方体的有效计算

    2.1 compute cube操作与维灾难
    多维数据分析的很想是有效地计算许多维集合上的聚集。用SQL的属于,这些聚集称为分组(group-by)。每个分组可以用一个方体表示,而分组的集合形成定义数据立方体的方体的格。

    • 数据立方体是方体格:假设相对ALLElectronics的销售创建一个数据立方体、包含city、item、year、sales_in_dollars。
      1. 按city和item分组计算销售总和
      2. 按city分组计算销售和。
      3. 按item分组计算销售和。

    2.2 数据立方体可以被看成是方格体

    • 最底层的方体是基本方体
    • 最上层方体(顶点方体)只包含一个元
    • 那麽一个具有L层的n维立方体有多少个方体?

    在这里插入图片描述

    • Li是维i(除去虚拟的顶层all,因为概化到all等价于去掉一个维)的层次数。

    2.3 数据立方体的物化

    • 方体的物化有三种选择

      1. 不预先计算任何“非基本”方体(不物化)
      2. 预先计算所有方体(全物化)
      3. 在整个可能的方体集中有选择地物化一个适当的子集(部分物化)
        特点
      4. 第一种选择导致在运行时计算昂贵的多维聚集,可能很慢。
      5. 第二种选择可能需要海量存储空间,存放所有预先计算的方体。
      6. 第三种选择在存储空间和响应时间二者之间提供了很好的折衷。

    立方体在DMQL中的定义和计算
    在这里插入图片描述

    3 索引OLAP数据:位图索引

    3.1 位图索引

    • 在特定栏上的索引
    • 这一栏上的每一个值都对应于一个位向量
    • 位向量的长度:基本表中特定栏属性值的个数。
    • 如果基本表中的给定行的属性值为v,则在位图索引的对应行,表示该值的位为1,该行的其它位均为0
    • 对于基数较大的域不大适合
      在这里插入图片描述

    3.2 连接索引

    • 如果两个关系R(RID ,A)和S(B,SID )在属性A和B上连接,则连接索引记录包含JI(RID,SID)对,其中RID和SID分别来自R和S的记录标识符。
    • 传统的索引将给定列上的值映射到具有该值的列表上,而连接索引登记来自两个关系数据库的可连接行
    • 在数据仓库中,连接索引把星形模式的维值连接到事实表中的行,事实表和它对应维表的连接属性是事实表的外关键字和维表的主关键字
    • 连接索引可以跨越多维,形成复合连接索引
      在这里插入图片描述

    4 OLAP的有效处理

    4.1 典型的数据仓库设计过程

    • 物化方体和构造OLAP索引结构,目的是加快数据立方体中的查询处理。

    • 给定物化的视图,查询处理应按如下步骤进行

    • 确定哪些操作应当在可利用的方体上执行

      1. 将查询中的下钻,上卷等转换成对应的SQL 和/或OLAP操作, 例如, 数据立方体上的切片和切块可能对应于物化方体上的选择和/或投影操作
    • 确定相关操作应当使用那些物化的方体

      1. 涉及找出可能用于回答查询的所有物化方体,使用方体之间的“支配”联系知识,剪去上集合,估计使用剩余物化方体的代价,并选择代价最低的方体。

    5 OLAP的服务结构

    从逻辑上讲,OLAP服务器为商户用户体哦那个仓库火数据集市的多维数据,而不必关心数据如何存放和存放在何处。然后OLAP服务器的物理结构和实现必须考虑数据存放问题。用于OLAP处理的数据仓库服务器的实现包括

    • 关系OLAP(ROLAP)服务器
    • 多维OLAP(MOLAP)服务器
    • 混合OLAP(HOLAP)服务器
    • 特殊的SQL服务器

    5.1 OLAP的服务结构的比较

    • 关系OLAP(ROLAP)服务器:这是一种中间服务器,介于关系的后端服务器和客户前端中间。
    • 多维OLAP(MOLAP)服务器:这些服务器通过基于数组的多维存储引擎,支持数据的多维视图。
    • 混合OLAP方法结合ROLAP和MOLAP技术,得益于ROLAP较大的可伸缩性和MOLAP的快速计算。
    • 特殊的SQL服务器:为了满足关系数据库中日益增长的哦OLAP处理的需要,一些数据库系统提供商实现了特殊的SQ服务器,提供高级查询语言和查询处理,在只读环境下,在星形和雪花形模式上支持SQL查询。

    5.2 AP的快速计算

    • 特殊的SQL服务器:为了满足关系数据库中日益增长的哦OLAP处理的需要,一些数据库系统提供商实现了特殊的SQ服务器,提供高级查询语言和查询处理,在只读环境下,在星形和雪花形模式上支持SQL查询。
    展开全文
  • 数据仓库网站流量分析二 主题就是hive建表 一、 模块开发----数据仓库设计 ...维度建模是专门应用于分析型数据库、数据仓库、数据集市建模的方法 据集市可以理解为是一种"小型数据仓库"。
  • 软件界面设计简洁,美观,其人性化的软件流程,使普通用户不需培训也能很快掌握软件操作使用方法,上手极易。 强大报表与集成查询功能是本软件的最大特色,所有功能在用户需要的使用地方自然体现,不用打开多个窗口...
  • 软件界面设计简洁,美观,其人性化的软件流程,使普通用户不需培训也能很快掌握软件操作使用方法,上手极易。强大报表与集成查询功能是本软件的最大特色,所有功能在用户需要的使用地方自然体现,不用打开多个窗口...
  • 支持货品的无限分级分类支持先进先出、移动平均加权等多种记长方法;支持条码打印、识别;支持产品图片管理,支持小数数量出入库。智能多重备份,完备的用户权限管理。软件小巧,功能强大、界面简洁。网络版不限用户...
  • 传统的解决方案:运用人工的计算方法需要先根据产品的组装清单逐个列出计算,当要计算多种产品,中间又嵌套半成品时将是件非常繁琐的事,并且很难做到准确、及时的核算,并还要核对库存最后才能得出库存报表运用了...
  • 仓库管理软件 带注册机

    热门讨论 2011-10-23 16:16:55
    具体的使用方法是选中货品资料表格的一条数据,按住鼠标左键不放往下拖动,选中的记录会有一层淡蓝色.这时可以放开左键,右击鼠标会出现一个菜单,点击里面的"批量修改货品分类",选好一个分类,点击确定即完成货品资料...
  • 动态数据仓库的商务智能系统分析论文 从软件系统应用角度看是数据仓库、联机分析处理、数据挖掘等技术方法和工具在商业活动中的集中应用。其工作原理是从企业各类数据源收集数据,经过抽取(extract)、转化(transform...
  • 种情况下,如何为十乃至上百台服务器裸机快速安装系统呢?传统的USB光驱.移动硬盘等安装 方法显然已经难以满足需求。 ​ 借助于YUM软件仓库,可以完成安装.卸载.自动升级rpm软件包等任务,能够自动
  • 商店仓库管理系统 一、问题描述 系统应具有下列主要功能:输入记录功能:从键盘输入货物信息:商品代号,商品名称, 量,价格,所属类别(如家用电器、日用品等)等;修改商品数量、删除记录功能、按商品代号查询...
  • 因此,数据仓库与数据库的区别不仅仅是应用的方法和目的上的,同时也涉及产品和配置。 <br> 以辩证的眼光来看,数据仓库的兴起实际上是数据管理的一种回归,是螺旋式的上升。今天的数据库就好比当年的层次...
  • SQL Server 2014引入了聚集列存储索引,但是导致select语句不能直接进行查询,当想要通过sqoop工具(spark同理)从sqlserver往hive仓库中抽时,只能整表抽,不能做一些字段的筛选。 二.解决办法 方法一:select ...
  • 数据仓库海量数据–>OLAP服务器在秒内回答决策支持查询 因此数仓要支持高校的数据立方体计算技术、存取方法和查询处理技术 1.数据立方体的有效计算 核心:有效计算多维集合上的聚集(分组),每个聚集(分组...
  • Mquery是便于分析人员使用的Web GUI,可以浏览您的数字仓库。 它可用于在眨眼间搜索TB的恶意软件: 对2.1M文件的查询 在,我们使用 ,通过ngram加速查询。 演示版 即将创建公共实例,敬请期待... 快速开始 1.安装...
  • 实创仓库管理系统是一款专为中小企业或个体工商户而设计开发的仓库管理软件,软件功能实用,界面大方,操作方便。 可快速进行出库、入库,库存查询等操作,并有十余种统计报表让您快速进行数据分析,助您把握商机,...
  • 【判断题】超限货物的公路运输,属于特种货物运输。 (2.0分)【多选题】最适合集装箱运输的货物有( ) (5.0分)【判断... (2.0分)【单选题】以下盘点方法,会妨碍仓库的日常运营的是( ) (3.0分)【判断题】联合运输是指一...
  • · 本店提供全方位的技术指导、安装调试等,具体软件使用方法请看软件内的帮助文件 · 本店所出售的软件,均保证软件本身的可用性,不承担误删除、误操作引起的文件丢失 · 本店软件一经销售,不接受任何以软件功能...
  • 4.3.11 数据收集和管理数据仓库146 4.3.12 使用SMO来复制统计信息146 4.4 索引优化146 4.4.1 表和索引的结构146 4.4.2 索引访问方法153 4.4.3 索引策略的分析191 4.4.4 碎片200 4.4.5 分区201 4.5 准备样本数据202 ...
  • Hive中如何确定map

    2016-04-11 09:57:42
    Hive 是基于 Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 sql 查询功能,可以将 sq l...有哪些方法可以调整 map 呢? 本文测试集群版本:cdh-4.3.0。 hive 默认的 input ...
  • 1. 存储优化存储数据时,影响存储速度的主要是索引、唯一性校验、一次存储的数据条等。存储数据的优化,不同的存储引擎优化手段不一样,在MySQL中常用的存储引擎有,MyISAM和InnoDB,两者的区别:1.1. 存储引擎...
  • 邬伦教授《地理信息系统:原理、方法和应用》 这个是pdf版本的,方便阅读,前面那个word的方便打印,不过还是看大家的喜好了。 详细目录如下: 前言 序 第一章 地理信息系统概论 1.地理信息系统的基本概念 2.地理...
  • 什么是星型模型

    千次阅读 2019-02-12 15:18:36
    星型模型是最简单的数据集市模型,是最广泛用于开发数据仓库和维度数据集市的方法。星型模型由一个或多个引用任意数量的维度表的事实表组成。 星型模型是雪花模型的一个重要特例,对于处理更简单的查询更有效。 星型...
  • 聚集的基本原理

    2007-09-30 21:31:00
    十年前,Ralph Kimball描述了聚集表,认为是“大型数据仓库中提升性能的方法”,“聚集对性能有很大的影响,有时候在百种方法中惟有聚集能够加速查询,再没有其它方法有这么大的收益”。虽然过了十年,但这些话...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 165
精华内容 66
关键字:

仓库查数方法