Posted on 2010-02-23 11:23
FineReport——報表技術領跑者 閱讀(502)
評論(0) 編輯 收藏 所屬分類:
Java報表技術知識
通常情況下,我們首先需要對sql進行優化以保證數據集中不包含不必要的數據,比如上一節"SQL優化數據集"所講到的盡量不要使用"select * from"和"盡量在sql里面過濾"。通過sql優化,我們往往能夠得到最精簡的數據集,滿足大部分報表的需求。
但是,對于一些大數據量的報表來說,僅僅優化SQL是不足夠的,對于這種報表,因為他所要展現的數據量本身就很大,所以即使sql精簡優化后,仍然有很多條記錄,有時候如果不緩存這些數據,那么頻繁的數據庫連接和sql查詢是數據庫所承受不了的,并且取數速度的降低會極大的降低報表執行速度。因此,FineReport提供可選擇的方案讓你來緩存這些數據,緩存分為內存緩存,和磁盤緩存。顧名思義,內存緩存就是把數據緩存到RAM中,從而再次取數時就不需要從數據庫取,而是直接從內存里面拿。內存緩存是效率很高,取數速度快,但是重要的缺點是占用內存空間資源,如果把大量的記錄,比如幾十萬條都緩存到內存中去,就有可能造成OutOfMemory拋錯。因此在數據量超過內存緩存限制的情況下,我們采用空間資源更大更便宜的硬盤緩存,但是硬盤緩存會造成取數效率下降,增長時間。因此,在大數據量下,合理平衡分配內存緩存和磁盤緩存往往對性能有著至關重要的影響。一個重要的原則是,內存緩存空間資源有限,但效率很快;硬盤緩存空間資源幾乎沒有限制,但效率底,往往很慢。
下面是設置數據集緩存的界面:
