InfoCube信息立方体的优化
- 颗粒度尽可能大:尽可能不要在Cube里放太明细的数据(即维度字段越小越好),这种需求首先考虑R3用ABAP解决,若是非要在BW,能够考虑在DSO出明细报表,在Cube出汇总报表,经过RRI接口调用明细报表。
- 拆分多个:当Cube的数据量很大时,能够拆分红多个Cube,再用MultiProvider拼起来,这样query会在N个Cube中并行,提升效率。这就是所谓的逻辑分区。常见的分区方式有按年月,按国家,按BU,按类型等。
- 压缩:给Cube作Compression。Compression 本质上是去掉Data Dimension,这样fact table就被压缩了,可是request id也消失了,将没法经过request id去管理数据(慎用,最好是半年甚至一年以上的数据)。
- 索引:数据库的索引能够加快查询速度
- 分区:对于很大的Cube,能够作partition,这是物理分区,只支持按时间分区。
- 汇集:使用Aggregation能够提升性能。可是Aggregation自己是cube的一个子集,提升性能的同时也加大了数据冗余,因此不要用太多。
- Staitics:按期刷新DB Statistics 能够提升reporting的效率。
- 使用MP:维度设计上,避免不少数据量很大char.放在一个维度上(多对多的不要放在一个维度里),由于这样会让维度表变得很大。一般,尽量拆分红更多的维度(不过维度太多会致使 fact table巨大,因此要作好平衡),而后在multiprovider 层面,把相关(指业务意义上的相关)的char都放一个维度里,而后作好Mapping,这样便可以让用户更容易理解MultiProvider,下层CUBE维度的从技术角度拆分与组合(按1:1或1:N的放在一块儿的原则)提升了性能,一箭双鵰。
- Line item Dimension:对于material等很大的主数据,使用Line item Dimension(即将M:N多对多的字段,让他们一我的一个维度,这样天然就成了行项目维度了,提升性能).
- BIA:使用BIA是比Aggregation更有效的方法,就是要花很多钱。
欢迎关注本站公众号,获取更多信息