【问题标题】:OLAP Saiku Cache expiresOLAP Saiku 缓存过期
【发布时间】:2013-03-22 12:36:32
【问题描述】:

我正在使用 Saiku 和 PHPAnalytics 在我的多维数据集上运行 MDX 查询。 似乎如果我运行查询一切都很好,缓存很好。但是,如果我花 2 个小时再次运行这些查询 - 它不使用缓存!为什么?我需要缓存保存很长时间!该怎么办?我尝试添加这个ti mondrian.properties mondrian.rolap.CachePool.costLimit = 2147483647

但没有帮助。做什么?

【问题讨论】:

  • 我们也有同样的问题。幸运的是,无论如何,我们每 60 分钟刷新一次缓存,并用更新的数据重新填充它们。
  • 我想这也是我要做的。您的缓存是否存在 60 分钟?
  • 我不确定,但我认为确实如此。

标签: caching olap mondrian saiku


【解决方案1】:

蒙德里安的默认内存缓存将事物存储在 WeakHashMap 中。这意味着它可以由 JVM 的垃圾收集器自行决定清除。大多数应用程序服务器都设置为定期清理垃圾收集(通常每小时左右)。您必须调整 JVM 的配置以不执行此操作。

-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000

您还可以实现自己的 SegmentCache SPI 缓存实现。如果您的实现使用硬引用,它们将永远不会被收集。这比较棘手,需要你做大量的学习才能把它做好。您可以先查看default implementation 并从那里开始。

【讨论】:

    【解决方案2】:

    mondrian 缓存应该缓存起来,直到缓存被故意刷新。也就是说,它使用一个老化的系统来确定应该缓存哪些内容,如果它用完内存来存储数据,最旧的查询会被推出缓存并被替换。

    我没有尝试过 PHPAnalytics 的东西,但也许他们已经在 Saiku 服务器中调用了一些定期刷新缓存,否则这不应该发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2020-08-20
      • 2012-02-09
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      相关资源
      最近更新 更多