在不考虑增量计算的情况下,其实这个还是缓存量和查询速度的博弈,如果缓存量不够,势必会缓存一些高层级,这样对于底层级的查询就需要走数据源,性能就差,如果查询缓存底层级成员的组合那么所有的查询都不需要再走数据源,而是直接在内存中计算。当然最好的办法还是需要判断一下最常用的层级和每一个层级的成员个数,如果某一层级的成员个数过多则不适合缓存,如果查询频率比较高的层级则更适合缓存。
任务艰巨啊,还是先一步一个脚印的走吧,首先第一步将mondrian的缓存移出程序并且考虑一下缓存结构是否有比较再进行优化,第二步可以分析一下mondrian的执行SQL,看一下有没有优化的空间,第三步是进行预计算保存在缓存中,当然这时候暂时不考虑到动态的增量更新,最后再考虑如何做到增量计算。
?