我仍在学习 OLAP、多维数据集和 SSAS 的基本知识,但我遇到了性能障碍,我不确定我是否理解正在发生的事情。
所以我有一个简单的多维数据集,它定义了两个简单的维度(类型和区域),第三个时间维度层次结构(去年->季度->月->日->小时->10-分钟)和一个度量(总和在名为 Count 的字段上)。数据库跟踪事件:它们发生的时间、类型、发生的地点。事实表是每 10 分钟间隔的事件的预先计算摘要。
所以我设置了我的多维数据集,并使用浏览器一次查看我的所有属性:随着时间的推移,每种类型的每个区域的总计数,从年份向下钻取到 10 分钟间隔。报告在性能上与浏览类似。
在大多数情况下,它足够活泼。但是随着我深入钻取树,查看每个级别需要更长的时间。最后在分钟级别,它似乎需要 20 分钟左右才能显示仅有的 6 条记录。但后来我意识到我可以在不等待的情况下查看其他分钟级别的钻取,所以看起来立方体正在计算整个表,这就是它需要这么长时间的原因。
我不明白。我预计进入 Quarters 或 Years 需要的时间最长,因为它必须汇总所有数据。转到最低的指标,大量过滤到大约 180 个单元格(6 个间隔,10 种类型,3 个区域),似乎应该是最快的。为什么多维数据集处理整个数据集而不仅仅是可见子集?为什么最高级别的聚合速度如此之快,而最低级别的聚合速度却如此之慢?
最重要的是,我可以通过配置或设计做些什么来改进它吗?
我刚刚想到的一些其他细节可能很重要:这是 SSAS 2005,在 SQL Server 2005 上运行,使用 Visual Studio 2005 进行 BI 设计。多维数据集(默认情况下)设置为完整 MOLAP,但未分区。事实表有 1,838,304 行,所以这不是一个疯狂的企业数据库,但它也不是一个简单的测试数据库。没有分区,所有的 SQL 东西都在一台服务器上运行,我可以从我的工作站远程访问它。