1. 爲何要性能優化
您是否遇到訪問一張報表時加載時間很長?或者頻繁訪問大數據量報表占用了過多的服務器内存而導緻内存溢出?又或者過多的用戶并發訪問的時候服務器承受壓力過大導緻服務器崩潰?
您是否有這樣的感想,訪問了一張複雜報表,數分鍾後再次訪問了同樣的報表,卻發現還需等待相同的時間才看到結果,這太不人性化!
您是否因爲頻繁地出現請求超時而惱火?
您是否......
若您遇到了以上的種種情況,這說明您的報表系統需要進行性能優化,趕緊行動起來吧,讓您的報表系統運行地更快更順暢!
如果用戶所在場景行式引擎無法支持,則可以試用 新計算引擎插件 ,該插件實現了多數據源情況下的分頁查詢功能,用戶無需再寫複雜的分頁 SQL 或 JS 按鈕,就可以讓報表快速完成首頁加載。
注:該插件支持 Oracle、SQL Server、MySQL、HANA、PostgreSQL、Impala、DB2 等大部分主流 JDBC 數據源。
2. 影響性能的因素
以上種種性能缺陷是如何産生的呢?一般有如下幾方面存在性能問題:
2.1 報表取數
一般來說,報表越複雜,所涉及到的後台數據庫基礎表也就越多。除了格式簡單的列表式報表需要在報表中顯示超大的數據量外,大部分的報表是從幾十萬或者幾百萬的源數據中篩選,運算,返回幾十條或幾百條不等的數據結果。如果取數使用的方法不恰當,報表取數時間就會過長,從而影響性能。
2.2 報表制作
報表制作時往往會使用字段的關聯、高亮、數據字典、公式計算等等報表内置的功能,如果這些功能使用的不正确,或者報表存在多餘的設置,這樣就會因爲這些不必要的設置而增加計算時間,從而影響性能。
2.3 服務器性能
FineReport 作爲純 Java 軟件,可以與 J2EE 的應用無縫集成,集成至服務器的報表就會繼承服務器的資源。服務器的虛拟内存、連接池的設置等等往往會導緻很多性能問題。
3. FineReport 如何優化性能
針對影響性能的因素,FineReport 有不同的優化方案。如對 SQL 的優化,使用存儲過程等優化取數過程;減少冗餘單元格及不必要的設置從而加快報表計算時間;采用并發設置,緩存設置,集群等提高服務器性能等等。
簡而言之,FineReport 性能優化,主要包括兩個方面:一、報表性能優化;二、服務器性能優化。具體優化方法我們将在本章下面進行詳細介紹。
4. 誰需要進行性能優化
這一部分文檔适用於初步掌握了報表設計,且需要對報表的性能做進一步優化的報表設計者;或者報表開發完畢,在向服務器部署的過程中,需要對服務器進行優化的部署工程師。