2013-03-22 109 views
1

我使用Saiku和PHPAnalytics在我的多維數據集上運行MDX查詢。 它似乎如果我運行查詢它都很好,緩存是好的。但是,如果我花2小時再次運行這些查詢 - 它不會使用緩存!爲什麼?我需要將緩存保存很長時間!該怎麼辦?我嘗試添加該TI mondrian.properties mondrian.rolap.CachePool.costLimit = 2147483647OLAP Saiku緩存過期

但沒有幫助。什麼做?

+0

我們有同樣的問題。幸運的是,我們無論如何都會每隔60分鐘刷新一次緩存,並使用更新的數據重新填充緩存。 – 2013-03-22 13:10:22

+0

我想這也是我要做的。你的緩存有60分鐘嗎? – 2013-03-22 13:34:08

+0

我不確定,但我認爲它確實。 – 2013-03-25 21:55:26

回答

1

WeakHashMap中默認的內存緩存的蒙德里安商店的東西。這意味着它可以由JVM的垃圾收集器自行清理。大多數應用程序服務器都設置爲定期掃描垃圾回收(通常每個小時左右)。你必須調整你的JVM的配置,不要這樣做。

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

您還可以實現SegmentCache SPI你自己的緩存實現。如果你的實現使用了嚴格的引用,它們將永遠不會被收集。這很難做,而且需要你做一些相關的研究才能做對。您可以先看看default implementation並從那裏開始。

0

蒙德里安緩存應該緩存,直到緩存是故意刷新。也就是說,它使用老化系統來確定如果內存不足以存儲數據,應該緩存哪些內容,最老的查詢將被推出緩存並進行替換。

我沒有嘗試過的東西PHPAnalytics,但也許他們已經把一些調用到齋宮服務器刷新定期緩存,否則這不應該發生。