影響報表性能的幾個因素

影響報表性能的幾個因素

ID:38275844

大?。?98.19 KB

頁數(shù):4頁

時間:2019-06-01

影響報表性能的幾個因素_第1頁
影響報表性能的幾個因素_第2頁
影響報表性能的幾個因素_第3頁
影響報表性能的幾個因素_第4頁
資源描述:

《影響報表性能的幾個因素》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、影響報表性能的幾個因素在軟件項目中,用戶常常會抱怨報表查詢特別慢,甚至慢的不能忍受。這給開發(fā)人員帶來巨大的壓力。那么,報表的處理過程如何劃分?處理過程中有哪些環(huán)節(jié)容易出現(xiàn)性能問題?如何優(yōu)化這些環(huán)節(jié)呢?我們先看一下報表處理過程中的各個環(huán)節(jié)劃分,如下圖:報表處理過程示意圖選擇報表輸入?yún)?shù)報表解析數(shù)據(jù)計算數(shù)據(jù)傳輸報表生成查看報表)(UU1點擊查看U3查看報表層U2輸入?yún)?shù)戶報表結果用)(RR1報表引擎R2生成可視層表解釋報表化報表報D2JDBC傳輸)數(shù)據(jù)(DD1執(zhí)行數(shù)據(jù)層據(jù)計算數(shù)圖1:報表處理過程示意圖如圖所示,報表處理過程為:1、用戶選擇報表輸入?yún)?shù)后,報表引擎會根據(jù)報表模板和輸入?yún)?/p>

2、數(shù)來解釋報表,并將數(shù)據(jù)計算和讀取請求發(fā)送給數(shù)據(jù)層。2、數(shù)據(jù)層負責讀取、計算和返回數(shù)據(jù)。數(shù)據(jù)層一般都是傳統(tǒng)數(shù)據(jù)庫:Oracle、DB2等。3、數(shù)據(jù)層通過JDBC等接口將結果數(shù)據(jù)傳輸給報表工具。4、報表工具將接收到的數(shù)據(jù),按照報表模板的樣式生成可視化報表展現(xiàn)給用戶。上述這些報表處理過程中,網(wǎng)絡、報表層和數(shù)據(jù)層的各個環(huán)節(jié)都有可能成為性能的瓶頸。值得商榷的是,圖1中“R2生成可視化報表”這個環(huán)節(jié)一般也會包含一些數(shù)據(jù)計算過程:從數(shù)據(jù)層返回的數(shù)據(jù)還要經(jīng)過進一步加工才能滿足報表的要求。特別是具備編程能力的報表工具,在這個環(huán)節(jié)也會消耗一些計算時間。例如:BIRT的自定義腳本、潤乾報表的自定義數(shù)據(jù)

3、集、格間計算。因此,我們可以把這個環(huán)節(jié)分開,更有利于分析影響報表性能的因素。分開后如下圖:報表處理過程示意圖選擇報表輸入?yún)?shù)報表解析數(shù)據(jù)計算數(shù)據(jù)傳輸數(shù)據(jù)計算報表生成查看報表)(UU1點擊查看U3查看報表層U2輸入?yún)?shù)戶報表結果用)(RR1報表引擎R2數(shù)據(jù)再次R3生成可視層表解釋報表計算化報表報D2JDBC傳輸)數(shù)據(jù)(DD1執(zhí)行數(shù)據(jù)層據(jù)計算數(shù)圖2報表處理過程示意圖(細分)在圖2中,標黃色的部分,是影響報表性能的主要因素。也就說,報表引擎對報表的解釋和生成可視化報表的環(huán)節(jié)一般都不會成為性能問題的主要因素,最容易造成報表慢的,是數(shù)據(jù)計算和JDBC傳輸。因此,針對數(shù)據(jù)計算和JDBC傳輸所

4、做的優(yōu)化往往事半功倍。劃分好了報表處理的環(huán)節(jié),需要分析一下圖2中黃色部分造成性能問題的原因:一、數(shù)據(jù)層“D1執(zhí)行數(shù)據(jù)計算”環(huán)節(jié)。在實際項目中,報表開發(fā)人員往往需要編寫一些很長很復雜的SQL語句(或存儲過程),來為報表計算數(shù)據(jù)。報表開發(fā)人員會發(fā)現(xiàn),使用SQL(或存儲過程)實現(xiàn)復雜統(tǒng)計運算非常困難,特別是與序和集合有關的運算,如計算每月銷售額都排進前10名的產(chǎn)品、連續(xù)五天上漲的股票等為報表準備數(shù)據(jù)的SQL過于復雜,可能長達數(shù)十行甚至數(shù)百行。因為難以完整指定數(shù)據(jù)庫的執(zhí)行路徑,所以復雜SQL執(zhí)行起來一般都比較慢。報表開發(fā)人員想人工優(yōu)化這些復雜SQL的時候也會發(fā)現(xiàn)很難入手。這是“D1執(zhí)行數(shù)

5、據(jù)計算”環(huán)節(jié)影響報表性能的主要因素。例子:計算每個月的銷售額都在前10名的客戶。selectClientfrom(select*from(selectB.*,row_number()over(partitionbymonthorderbySumValuedesc)rownfrom(selectto_char(SellDate,'mm')month,Client,sum(Quantity*Amount)SumValuefromcontractwhereSellDate>=to_date('2012-01-01','yyyy-mm-dd')andSellDate<=to_date('

6、2012-12-31','yyyy-mm-dd')groupbyto_char(SellDate,'mm'),Clientorderbymonth,client)B)Cwhererown<=10)DgroupbyClienthavingcount(Client)=(selectcount(distinct(to_char(SellDate,'mm')))fromcontractwhereSellDate>=to_date('2012-01-01','yyyy-mm-dd')andSellDate<=to_date('2012-12-31','yyyy-mm-dd'))二、數(shù)據(jù)層“

7、D2JDBC傳輸數(shù)據(jù)”環(huán)節(jié)。傳統(tǒng)主流數(shù)據(jù)庫提供的JDBC驅動在將數(shù)據(jù)流轉換成Java對象時的效率很低,但又不可避開,在大量數(shù)據(jù)時就會感覺速度非常慢。雖然數(shù)據(jù)庫的版本不斷升級,但是這個問題一直都沒有解決好。所以,對于較大源數(shù)據(jù)量報表來說,JDBC經(jīng)常也是報表變慢的主要因素。三、報表層“R2數(shù)據(jù)再次計算”環(huán)節(jié)。1、很多報表工具會把“R2數(shù)據(jù)再次計算”和“R3生成可視化”兩個環(huán)節(jié)一并處理,數(shù)據(jù)計算的時候附帶著很多顯示屬性(字體、顏色、格子大小等等),會一定程度上降低計算速度。2、報表工

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。