1

私はキューブで MDX クエリを実行するために Saiku と PHPAnalytics を使用しています。クエリを実行しても問題ないようです。キャッシュは問題ありません。しかし、2 時間行ってそれらのクエリを再度実行すると、キャッシュは使用されません! なんで?キャッシュを長期間保存する必要があります。何をすべきか?この ti mondrian.properties mondrian.rolap.CachePool.costLimit = 2147483647 を追加しようとしました

しかし、助けはありません。どうする?

4

2 に答える 2

1

Mondrian のデフォルトのメモリ内キャッシュは、WeakHashMap に物を格納します。これは、JVM のガベージ コレクターの裁量でクリアできることを意味します。ほとんどのアプリケーション サーバーは、ガベージ コレクションの定期的なスイープを実行するように設定されています (通常は約 1 時間ごと)。これを行わないようにするには、JVM の構成を微調整する必要があります。

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

また、SegmentCache SPI の独自のキャッシュ実装を実装することもできます。実装でハード参照が使用されている場合、ハード参照は収集されません。これを行うのはよりトリッキーであり、それを正しく行うにはかなりの勉強が必要になります。デフォルトの実装を見て、そこから始めることができます。

于 2013-07-09T19:07:56.573 に答える
0

mondrian キャッシュは、キャッシュが意図的にフラッシュされるまでキャッシュアップする必要があります。つまり、エージング システムを使用して、データを格納するためのメモリが不足した場合に何をキャッシュする必要があるかを判断し、最も古いクエリがキャッシュからプッシュされて置き換えられます。

私は PHPAnalytics のものを試したことはありませんが、定期的にキャッシュをフラッシュするために Saiku サーバーに何らかの呼び出しを行った可能性があります。そうでなければ、これは発生しないはずです。

于 2013-06-25T20:17:53.407 に答える