使用saiku的人,確定都有這麼一個經歷,查詢了一次多維分析數據表,第二次以後就特別快,由於它緩存告終果,可問題是過了一天,甚至幾天,來源數據早都更換了,可仍是這個緩存結果。問題來了,緩存不失效!web
那麼如何解決這個問題吶?我總結了兩個辦法:ajax
這個方案修改起來特別簡單:修改mandrian配置文件tomcat/webapps/saiku/WEB-INF/classes/mondrian.properties,設置失效便可。mondrian.rolap.star.disableCaching=true。緩存
但是這種方案基本不能應用到生產環境,由於數據太大,且是全局屬性,在特定的開發環境或許能夠用一用tomcat
這個方案略複雜,須要本身寫curl命令,模擬管理員點擊刷新緩存。bash
在saiku的管理頁面,有一個刷新緩存的按鈕,點擊以後,會找到這個ajax請求:/saiku/rest/saiku/admin/datasources/mini_com_order_detail/refresh 其中mini_com_order_detail是立方體的名稱,更換便可。cookie
這個方法,模擬管理員登陸是核心,須要下載cookie,而後訪問這個連接,我把代碼粘貼上來,你們參考:session
#!/bin/bash #獲取時間參數 curl -c ./cookie.txt -d "language=zh&password=admin&username=admin" http://***.qunar.com:8080/saiku/rest/saiku/session curl -b ./cookie.txt "http://***.qunar.com:8080/saiku/rest/saiku/admin/datasources/%E4%B8%80%E6%97%A5%E6%B8%B8/refresh"
那麼這個任務我會在etl執行以後,刷新緩存app