SSAS的索引机制

0
在处理CUBE时,SSAS会建一些索引,它建索引的依据是什么?能否人为干预建索引的过程?
已邀请:
3

xpivot - SSAS & Excel &Cube架构师、产品经理 课程地址:http://www.hellobi.com/course/34 2015-10-09 回答

先说维度的处理(Process), 如同关系型数据库的索引,首先得有数据(Data Table), 才能在数据上创建索引,所以SSAS在Process Full的第一步是Process Data, 生成维度属性以及层次结构的存储区(这时候会清除对应的事实分区数据),第二步才能Process Index, 这时候默认会对所有维度属性创建位图索引(Bitmap Index),可以参考Oracle的位图索引,MSSQL貌似后期版本也引入了位图索引,简单说Bitmap和B-Tree的存储结构的区别就是,B-Tree的根节点存储的是数据表每一行索引键的键值(Key)和对应的RowID(Value), 而Bitmap的存储方式抽象的理解是对B-Tree做了行转列,Bitmap的行数(高度)取决于索引键去重值的数量,所以适用于重复度较高的字段,例如性别,年龄,学历等,不适用于重复度很低的字段,例如会员编号,身份证号等,位图索引的高度和检索性能成反比。
以上过程无需人工干预,但SSAS也提供了移除位图索引的渠道:AttributeHierarchyOptimizedState=NotOptimized。
事实分区的索引处理,相对于维度的索引处理,除了创建必要的位图索引,还顺带创建了Aggregation聚合值,这也是MOLAP相对ROLAP的优势所在,预聚合所完成的任务就是:空间换时间。

要回复问题请先登录注册