我们使用 mondrian olap 模式和 saiku 来分析我们的记录。我们使用星型模式模型。我们有一个包含大约 3000000 条记录的事实表。我们有四个维度表时间戳、等级、路径和域。每个条目的时间戳几乎都是唯一的。现在,在我们执行分析时,在 saiku 中部署模式后,saiku 需要花费大量时间来返回结果。获取 3000 条记录需要 10 分钟,如果记录数量超过 50000 条 saiku 会死掉。请建议我应该怎么做才能提高 saiku 和 mondrian 的性能。
问问题
2136 次
2 回答
2
您可以轻松确定这是数据库问题还是 saiku/mondrian 问题:
- 在(文本
saiku-server/tomcat/webapps/saiku/WEB-INF/classes/log4j.xml
下方取消注释部分)中启用 sql 日志记录工具Special Log File specifically for Mondrian SQL Statements
- 重启服务器
- 在 Saiku 中做几个典型的分析
- 从日志中获取使用过的查询
- 直接在数据库中分析查询的性能(例如,对于 PostgreSQL,有
explain analyze
命令)
如果查询的性能和 Saiku 一样慢,那么您已经确定了您的问题。
顺便提一句。如果您确实有时间戳的维度(按秒?),那么您应该考虑将其拆分为具有天数和秒数的两个维度。
于 2014-04-01T14:32:58.227 回答
0
很难理解您的具体问题是什么。
当我们与 saiku 性能问题作斗争时,有两件事对我们有帮助:
所有字段的索引,有时它们的组合可以用作维度 - 像数据库中的任何地方一样有帮助
我们避免了与其他表的联接,使我们的数据非规范化
于 2014-03-10T16:28:46.550 回答