怎麼檢查報表工具對大數據量報表的支持性?

大量數據從數據庫裏全部查出來,然後再生成報表輸出到 web 端,一般需要很長時間,用戶體驗很差,而且報表一般採用內存計算,全讀入的話也容易爆掉內存。所以大數據量報表呈現時都是採用分頁的方式,儘量快速呈現第一頁,用戶也可以隨意翻頁,每次顯示的一頁數據量比較小,也就不會內存溢出。

大部分報表工具通常是使用數據庫的分頁機制。利用數據庫提供的返回指定行號範圍內記錄的語法,即界面端根據當前頁號計算出行號範圍(每頁顯示固定行數)作爲參數拼入 SQL 中,數據庫就會只返回當前頁的記錄,從而實現分頁呈現的效果。

但是這種方式會有兩個問題:一個是向後翻頁時,需要重新計算 sql,等待感會比較強;另一個是可能會因爲在翻頁時執行數據庫更新操作導致數據不一致。雖然這兩個問題可以通過遊標取數方式解決,但是遊標是一個單向操作,只能向後翻頁,不能向前翻頁,並不能從根本上解決問題。

潤乾報表則提出了完全不同的大數據報表處理方案,採用兩個異步線程完成取數和呈現,取數線程發出 SQL 後不斷取出數據緩存到本地,由呈現線程從本地緩存中獲取數據進行顯示。這樣,已經取出並緩存的數據就能快速呈現,不再有等待感;而取數線程所涉及的 SQL,在數據庫中保持同一個事務,也不會有不一致的問題。同時集文件存儲格式支持跳轉到任意頁訪問,從而極大地改善了用戶體驗。

數據庫系統本身並不直接支持這種機制,需要在報表工具層面做大量工作,潤乾報表因爲其內置的獨特計算引擎可以很方便實現這一點,其他報表工具則難以做到。潤乾報表中大報表展現設置很簡單,例如 sql 數據集可以直接在報表屬性裏設置大數據集:

imagepng

然後使用 big 標籤就可以快速展現報表數據了(在展現的同時後臺還在計算中,所以頁碼是會變化的):

imagepng

導出 excel 時會有進度提醒:

imagepng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章