大數據報表展現太慢了該怎么辦,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
報表要展現 100 多萬數據得用分頁方式查詢了,如果是自己寫代碼開發的報表就再實現一下分頁查詢就可以,不同的數據庫實現機制不一樣,具體網上資料很多。
如果是用報表工具開發的報表,要看工具本身是否支持異步的分頁查詢,很多報表工具提供的還是常規分頁(假分頁),即一次性把數據加載到內存,然后前端再分頁展示。
好一點的方式是用數據庫分頁機制來做,利用行號來過濾,但這種方式也有很多弊端,比如你會發現翻到后面會越來越慢,還有這個里面
大清單報表應當怎么做? 提到的一些問題。
還有一種更好的方式,按照上面帖子里給出的思路。把取數和呈現做現兩個異步線程,取數線程發出 SQL 后就不斷取出數據后緩存到本地存儲中,呈現線程根據頁數計算出行數到本地緩存中去獲取數據顯示。這樣,只要已經取過的數據就能快速呈現,不會有等待感,還沒取到的數據需要等待一下也是正??衫斫獾?;而取數線程只涉及一句 SQL,在數據庫中是同一個事務,也不會有不一致的問題。這樣,兩個問題都能得到解決。不過這需要設計一種可以按行號隨機訪問記錄的存儲格式,不然要靠遍歷把記錄數出來,那反應仍然會很遲鈍。
畫個圖感受感受:
②和③分別是兩個線程
看起來有點復雜,還是拿個做好的工具直接用吧:
海量清單與分組報表的實現
還能導出 Excel,也能打印。
看完上述內容,你們掌握大數據報表展現太慢了該怎么辦的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。