Java軟件報表軟件技術博客

          java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          1. 問題描述

          對于大數(shù)據(jù)量報表,若每次直接從數(shù)據(jù)庫中查詢數(shù)據(jù),不僅增加數(shù)據(jù)庫服務器的壓力,也極大的影響了取數(shù)的速度從而降低了報表的執(zhí)行速度,為此FineReport提供了數(shù)據(jù)集緩存與共享功能。

          FineReport可先將其數(shù)據(jù)集查詢的結果緩存下來,對于緩存下來的數(shù)據(jù),再次使用到相同數(shù)據(jù)集時,無需再次連接數(shù)據(jù)庫重新查詢數(shù)據(jù),直接使用緩存下來的結果,即使用FineReport的數(shù)據(jù)集共享機制,達到資源復用,減少取數(shù)時間從而提高了報表的展現(xiàn)速度。

          2. 數(shù)據(jù)集緩存

          緩存分為緩存至內存和緩存至磁盤。

          2.1 緩存至內存

          設置方法:默認的就是使用內存緩存即所有數(shù)據(jù)都保存在內存中,在數(shù)據(jù)庫查詢窗口可以看到,如下圖:

           

          設置后的效果:當執(zhí)行數(shù)據(jù)集時就會在將此記過緩存至內存中,下次在執(zhí)行此數(shù)據(jù)集時,會直接從內存緩存中取數(shù)。

          優(yōu)缺點:空間資源有限,但效率很高,取數(shù)速度快。

          什么情況使用:一般使用率高,且數(shù)據(jù)量不算太大的報表,可直接使用內存緩存。

          2.2 緩存至磁盤

          設置方法:點擊下拉框選擇緩存至磁盤當記錄大于,并設置行數(shù),如下:

           

          緩存至磁盤,即將數(shù)據(jù)緩存到服務器的磁盤中,默認是在C:\Documents and Settings\Administrator\.FineReport8.0\cache(windows操作系統(tǒng))下。

          注:如啟用了磁盤緩存,發(fā)現(xiàn)系統(tǒng)目錄下沒有cache文件夾,不要感到驚訝,雖然激活了磁盤緩存,但不是馬上開始把數(shù)據(jù)寫到磁盤中,而是會考慮系統(tǒng)的實際運行情況然后再進行處理。

          設置后的效果:記錄數(shù)默認大于0行:表示從第0條數(shù)據(jù)開始,使用磁盤緩存。即只采用磁盤緩存,取出的數(shù)據(jù)是全部放在磁盤中。

          記錄數(shù)大于如1000行:表示取得的數(shù)據(jù)前1000條是放入內存中,剩余部分緩存至磁盤,當用到1000條以外的數(shù)據(jù)時,就會從磁盤中讀取數(shù)據(jù)。

          優(yōu)缺點:空間資源又大又便宜,幾乎沒有限制;但效率低,取數(shù)速度往往很慢。

          什么情況使用:若是數(shù)據(jù)量很大的報表,如:幾十萬條記錄,可使用緩存至磁盤,設置恰當?shù)男袛?shù),避免全存在內存中,導致服務器OutOfMemory內存溢出。

          如行式引擎報表,可以將使用率高的前N頁數(shù)據(jù)緩存在內存,剩余記錄緩存在磁盤中。

          注:既然兩者都有優(yōu)缺點,因此需要合理分配內存和磁盤,把那些使用頻率最高的數(shù)據(jù)盡量放在內存中,從而提高在內存中的命中率。

          3. 數(shù)據(jù)集共享

          設置了數(shù)據(jù)集緩存后,只對當前數(shù)據(jù)集再查詢時才能讀取緩存中的數(shù)據(jù),若多個模板包含有相同的數(shù)據(jù)集(定義的SQL查詢語句相同,傳入的參數(shù)值相同,才算相同的數(shù)據(jù)集),便可以啟用數(shù)據(jù)集共享,使得他們共享同一個緩存結果,從而節(jié)省數(shù)據(jù)庫資源,并且提高取數(shù)和報表的展現(xiàn)速度。

          3.1 設置方法

          在定義數(shù)據(jù)連接的地方勾選是否共享數(shù)據(jù)集,如下圖所示:

           

          注:數(shù)據(jù)集緩存是對當前數(shù)據(jù)集有效,而共享數(shù)據(jù)集是對不同模板的相同數(shù)據(jù)集有效,并且需要將需要共享的數(shù)據(jù)集都勾選上。

          3.2 數(shù)據(jù)集共享屬性設置

          我們可以對緩存下的結果進行一些設置。

          進入FR平臺中,選擇管理系統(tǒng)>系統(tǒng)管理>緩存,可以看到數(shù)據(jù)集共享屬性如下圖所示:

           

          最大活動對象:指在緩存容器中最大放置的緩存對象個數(shù),如果活動對象數(shù)超過此數(shù)目,則服務器會根據(jù)下面的緩存策略來選擇哪些對象留下,哪些被去除

          最大生存時間:指的是緩存對象在容器中存活的最大時間,無論是否活動,一旦超過此時間,此緩存對象就失效,將會被移除

          最大空閑時間:指的是緩存對象在容器中停留不被使用不能超過的時間,也就是空閑的時間,如果空閑的時間超過這個時間,此對象就會被移除。

          注:管理系統(tǒng)>系統(tǒng)管理>緩存,下方的模板緩存屬性設置,是對模板計算的結果進行緩存設置,而上面所說的在數(shù)據(jù)集處的緩存設置則是對數(shù)據(jù)進行緩存設置,一個是對結果來說,一個是對于數(shù)據(jù)來說,要區(qū)別開來,這是兩個不同的概念。




          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 晋宁县| 四会市| 衡东县| 江口县| 许昌县| 岑溪市| 锡林浩特市| 五峰| 青浦区| 仁怀市| 华宁县| 开化县| 招远市| 金溪县| 渝北区| 景东| 葫芦岛市| 庆安县| 瓦房店市| 乡宁县| 梓潼县| 利津县| 突泉县| 玉溪市| 东乡县| 双城市| 同德县| 陕西省| 耒阳市| 彰武县| 长寿区| 原平市| 梅州市| 葵青区| 苍南县| 潮州市| 施秉县| 金秀| 大名县| 大洼县| 诸城市|