0

我们使用 mondrian olap 模式和 saiku 来分析我们的记录。我们使用星型模式模型。我们有一个包含大约 3000000 条记录的事实表。我们有四个维度表时间戳、等级、路径和域。每个条目的时间戳几乎都是唯一的。现在,在我们执行分析时,在 saiku 中部署模式后,saiku 需要花费大量时间来返回结果。获取 3000 条记录需要 10 分钟,如果记录数量超过 50000 条 saiku 会死掉。请建议我应该怎么做才能提高 saiku 和 mondrian 的性能。

4

2 回答 2

2

您可以轻松确定这是数据库问题还是 saiku/mondrian 问题:

  1. 在(文本saiku-server/tomcat/webapps/saiku/WEB-INF/classes/log4j.xml下方取消注释部分)中启用 sql 日志记录工具Special Log File specifically for Mondrian SQL Statements
  2. 重启服务器
  3. 在 Saiku 中做几个典型的分析
  4. 从日志中获取使用过的查询
  5. 直接在数据库中分析查询的性能(例如,对于 PostgreSQL,有explain analyze命令)

如果查询的性能和 Saiku 一样慢,那么您已经确定了您的问题。

顺便提一句。如果您确实有时间戳的维度(按秒?),那么您应该考虑将其拆分为具有天数和秒数的两个维度。

于 2014-04-01T14:32:58.227 回答
0

很难理解您的具体问题是什么。

当我们与 saiku 性能问题作斗争时,有两件事对我们有帮助:

  • 所有字段的索引,有时它们的组合可以用作维度 - 像数据库中的任何地方一样有帮助

  • 我们避免了与其他表的联接,使我们的数据非规范化

于 2014-03-10T16:28:46.550 回答