代码之家  ›  专栏  ›  技术社区  ›  vldmrrdjcc

为什么要使用Process Data vs Process Full来处理分区

  •  0
  • vldmrrdjcc  · 技术社区  · 6 年前

    如上所述 here : 过程数据 将只处理数据,而不构建聚合或索引。如果分区中有数据,在用源数据重新填充分区之前,将删除该数据。另一方面 进程已满 Analysis Services还将删除分区中的所有数据,然后处理该分区。因此,如果连接到分区的属性层次结构设置为 AttributeHierarchyOptimizedState = true AnalysisServices将为属性层次结构构建索引,以提高查询性能。我可以通过对Adventure Works数据库运行以下查询来确认这种行为:

    SELECT
    DIMENSION_NAME, ATTRIBUTE_NAME, ATTRIBUTE_INDEXED,
    ATTRIBUTE_COUNT_MIN, ATTRIBUTE_COUNT_MAX
    FROM SystemRestrictSchema($system.discover_partition_dimension_stat
            ,DATABASE_NAME = 'AdventureWorksDW2014Multidimensional-EE'
            ,CUBE_NAME = 'Adventure Works'
            ,MEASURE_GROUP_NAME = 'Internet Sales'
            ,PARTITION_NAME = 'Internet_Sales_2013') 
    

    当我 过程数据 所有属性的属性_索引列都设置为false。当我这么做的时候 进程已满 对于大多数属性,ATTRIBUTE_INDEXED column设置为true。

    所以我想知道为什么有人只想处理数据,从而牺牲查询性能,以获得什么? 谢谢

    0 回复  |  直到 6 年前
        1
  •  2
  •   Ferdipux    6 年前

    简而言之——减少立方体停机时间和立方体准备时间。正如您所说,代价是,在 ProcessData 和 进程索引 .
    处理通常会使多维数据集离线,至少在提交更改时是如此,这可能需要相当长的时间。为了减少因处理而导致的多维数据集脱机时间,尤其是在大型多维数据集上,使用 处理日期 选项完成此处理后,多维数据集中的新数据可用于查询,但性能会受到影响。之后 过程索引 在受影响的分区上启动,这将在对象上构建所有索引和聚合。
    根据我的经验,它只在大型项目中使用并有意义。另一个发现是跑步 进程默认值 OnCube构建缺失的索引和聚合,但没有指定精确的度量值组等。