优化前注意事项
1、数据质量。数据仓库中维度表的数据质量要严格保证。比如店仓的大区、省区、管理城市等属性和店仓代码没有一对多的上下级关系,这样在设计店仓维度时,就无法建立有效的层次结构。这会拖慢查询时的性能。
2、对报表分类。可按报表的使用方式和体积对用户报表进行分类。
1)
2)
3、成员数量巨大的维度,不建议查询到最底层的数据(叶级数据)时展开全部。比如到货品。
4、一张报表减少Sheet页的个数,每个Sheet页的数据透视表个数最好不超过2个;
5、分析服务(SSAS)使用64位服务器,充分利用CPU和内存。
优化策略
一般地,按5个方面进行优化。
1.
2.
3.
4.
5.
数据源设计
1、 为提高性能,请使用 Microsoft OLE DB Provider for SQL Server 或 SQL Native Client 访问接口而不是 .NET Data Provider for SQL Server (SqlClient) 连接到 SQL Server 数据源。
2、 不要在数据源中使用不支持的 OLE DB 访问接口。SSAS设计为使用特定的 OLE DB 访问接口集并经过测试。尽管其他 OLE DB 访问接口也可用,并且数据源向导可使您选择任何兼容的访问接口,但是不同访问接口的功能和行为可能有很大区别。
维度设计
良好的维度设计是建制Cube最重要的方面。根据最终用户的业务需求,设计维度正确的属性、属性关系及层次结构。
1、 避免只有单个维度的多维数据集
2、 避免建立多个维度,而这些维度只有单个属性,请考虑统一这些维度
3、 键属性(KeyColumns)的键列保证成员唯一性(可以使用多个键列保证唯一性)
4、 维度表中的字段如果没有分析意义,或暂时不用作分析,不要将它建为属性
5、 避免为每个维度指定多个不可聚合的属性(即IsAggregatable不要设为False)
6、 属性如设为不可聚合(IsAggregatable设为False),要指明DefaultMembers的值
7、 对具有 500,000 个或更多成员的属性使用数字键列
8、 有些说明性字段(比如客户的电话、邮箱地址),如果将它建为属性,请将AttributeHierachyEnabled
9、 每个维度最好建立一个层次结构
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
10、
11、
12、
13、
Cube设计
1.
2.
3.
4.
5.
分区设计
1、 使用 MOLAP存储模式
2、 将超过2千万行或大小超过250MB的大分区拆分为较小的分区以改进性能
3、 将度量值组的分区与少于2百万行或大小小于50MB分区合并
4、 DistinctCount度量值组分区可考虑按最常用的维度来分区(不一定是时间)
1、 不要在低于事实表粒度属性的级别建立聚合
2、 为具有 500,000 或更多行的分区设计聚合
3、 为单个分区生成的聚合数不能超过500
4、 不要将相关属性包括在同一聚合中
5、 将一个度量值组中的聚合设计数限制为三个
6、 删除任何分区都不使用的聚合设计
7、 包括只具有半累加性度量值的所有度量值组聚合中的时间维度粒度属性
8、 设计聚合时,要精确指定“估计的计数”和“分区的计数”;或者由SSAS自行计数
9、 聚合的大小不要超过事实表大小的1/3
10、
11、