廣西新聞網 > 首頁欄目 > 首頁要聞 > 正文 |
各种电脑系统 |
2025-10-04 16:57 來源:廣西云-廣西日報 記者 羅莎 楊思悅 通訊員 劉鵬飛 編輯:馮芯然 |
這個功能挺有意思的,里面需要注意的細節還真不少,現在拿出來跟大家分享一下,希望對你會有所幫助 這個功能挺有意思的,里面需要注意的細節還真不少,現在拿出來跟大家分享一下,希望對你會有所幫助。 做一個MySQL百萬數據級別的excel導出功能,如果走接口同步導出,該接口肯定會非常容易。 需要注意的是:如果用job的話,要避免重復執行的情況。比如job每隔5分鐘執行一次,但如果數據導出的功能所花費的時間超過了5分鐘,在一個job周期內執行不完,就會被下一個job執行周期執行各種電腦系統。 這樣導出數據的功能,在第一個job周期內執行不完,在第二次job執行時,查詢狀態,并不會查詢出狀態的數據,也就是說不會重復執行。 但它們都存在一個嚴重的問題就是:,POI有一套SAX模式的API可以一定程度的解決一些的問題,但POI還是有一些缺陷,比如07版Excel解壓縮以及解壓后存儲都是在內存中完成的,依然很大。 百萬級別的excel數據導出功能各種電腦系統,如果使用傳統的Apache POI框架去處理,可能會消耗很大的內存,容易引發問題。 而重寫了POI對07版Excel的解析,之前一個3M的excel用POI sax解析,需要100M左右內存,如果改用easyexcel可以降低到幾M,并且再大的Excel也不會出現內存溢出;03版依賴POI的sax模式,在上層做了模型轉換的封裝,讓使用者更加簡單方便。 easyexcel能大大減少占用內存的主要原因是:在解析Excel時沒有將文件數據,而是從磁盤上一行行讀取數據,逐個解析。 即使我們可以從數據庫中一次性查詢出所有數據,沒出現連接超時問題,這么多的數據全部加載到應用服務的內存中,也有可能會導致應用服務出現問題。 每頁大小和頁碼,是SearchModel類中的成員變量,在創建searchModel對象時,可以設置設置這兩個參數。 我們知道,excel對一個sheet存放的最大數據量,是有做限制的,一個sheet最多可以保存行數據。否則在保存數據時會直接報錯: 如果只有一個sheet可以這么玩,但如果有多個sheet就會有問題。因此,我們需要重新計算的起始位置。 我們可以將excel名稱和訪問路徑保存到中,這樣的話,后面就可以直接通過,訪問excel文件了。 我們可以加一張專門的,記錄通過webSocket推送的通知的標題、用戶、附件地址、閱讀狀態、類型等信息。 用戶拿到這個百萬級別的excel文件,到底有什么用途,在他們的電腦上能否打開該excel文件,電腦是否會出現太大的卡頓了,導致文件使用不了。 比如:用戶發現excel中有50萬的數據,可以正常訪問和操作excel,這時候我們可以將總條數調整成500000,把多余的數據截取掉。 其實各種電腦系統,在,增加更多的查詢條件各種電腦系統,用戶通過修改查詢條件,多次導數據,可以實現將所有數據都導出的功能,這樣可能更合理一些。 因此,我們需要考慮在sql語句中使用 商品編號,先把數據排好順序,再查詢出數據,這樣就能將相同商品編號,倉庫不同的數據放到一起。 但加了order by關鍵字進行排序之后,如果查詢sql中了很多張表,可能會導致查詢性能變差。 我們按照這套方案的開發了代碼,發到了pre環境,原本以為會非常順利,但后面卻還是出現了性能問題。
報紙版面截圖。 |
掃一掃在手機打開當前頁
|
>>更多精彩圖集推薦 |
|