本篇內(nèi)容介紹了“數(shù)據(jù)庫報表數(shù)據(jù)導(dǎo)出性能調(diào)優(yōu)方法是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、良慶網(wǎng)絡(luò)推廣、小程序設(shè)計、良慶網(wǎng)絡(luò)營銷、良慶企業(yè)策劃、良慶品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供良慶建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:aaarwkj.com
報表數(shù)據(jù)導(dǎo)出是一個常見且令人頭疼的問題,該功能主要放在管理后臺,系統(tǒng)運(yùn)營人員經(jīng)常需要導(dǎo)出一些數(shù)據(jù)做分析。報表導(dǎo)出遇到的難題,一是數(shù)據(jù)量大,二是查詢耗時,也是最容易導(dǎo)致系統(tǒng)OOM或者拖垮數(shù)據(jù)庫的問題。
如何解決查詢慢的問題
報表數(shù)據(jù)導(dǎo)出通常伴隨著復(fù)雜的sql語句,使用很多的查詢條件,因此在設(shè)計表的時候我們都會通過添加冗余的列來減少多表連接查詢,如果是最近幾年的項目,考慮到報表數(shù)據(jù)量增長速度快且數(shù)據(jù)量大可能會使用分表解決,不過單表的數(shù)據(jù)量依然很大,且在遇到復(fù)雜的查詢語句時也需要查多個表并聚合結(jié)果,這依然是很耗時的操作。
目前關(guān)系型數(shù)據(jù)庫也被化分為OLAP和OLTP數(shù)據(jù)庫,阿里AnalyticDB(adb)就屬于分析型的分布式數(shù)據(jù)庫(OLAP),主要用于數(shù)據(jù)分析,使用列存方式提升查詢效率。adb非常適合應(yīng)用于報表統(tǒng)計查詢業(yè)務(wù)。
如何降低內(nèi)存的使用
poi是一個提供讀寫excel文件的API類庫,但使用不當(dāng)很容易導(dǎo)致系統(tǒng)OOM,miniexcel正是為解決這一問題而編寫的,當(dāng)然,筆者在編寫miniexcel時也考慮到了另一個問題,那就是大批量數(shù)據(jù)一次查詢出來會占用太多內(nèi)存,報表數(shù)據(jù)導(dǎo)出通常是大批量的數(shù)據(jù),比如幾十萬、上百萬,因此miniexcel也提供了分頁查詢導(dǎo)出的功能。
除此之外,miniexcel還支持自定義導(dǎo)入導(dǎo)出。miniexcel是一個基于poi封裝的輕量且擴(kuò)展性強(qiáng)的報表導(dǎo)入導(dǎo)出工具,支持.xls、.xlsx、csv格式。
easyexcel是阿里開源的一款excel導(dǎo)入導(dǎo)出工具,也是基于poi封裝的,因此easyexcel與miniexcel在性能上并沒有太大區(qū)別。我們拿easyexcel與miniexcel做過對此測試,對比結(jié)果是miniexcel的導(dǎo)出耗時以及導(dǎo)出文件的大小都略優(yōu)于easyexcel,這一部分原因與miniexcel放棄支持表格樣式有關(guān)。
目前miniexcel正在洋蔥集團(tuán)內(nèi)部推廣使用,作者也會一直維護(hù)這個項目,也非常歡迎業(yè)內(nèi)朋友使用,并一起改進(jìn)miniexcel。
最近我們的管理后臺頻繁被操作系統(tǒng)kill掉,筆者也從運(yùn)維那里拿到一份dump數(shù)據(jù),但由于運(yùn)維提供的這份dump數(shù)據(jù)是在系統(tǒng)正常情況下導(dǎo)出的,因此并未能找出原因,不過從這份數(shù)據(jù)能夠看出,系統(tǒng)在正常使用情況下,所消費的堆內(nèi)存大約是2.3g,大部分是mybatis與spring消耗的內(nèi)存,其它比較耗內(nèi)存的是一個數(shù)據(jù)導(dǎo)出操作,堆中存儲了五十多萬條記錄,因此筆者猜測系統(tǒng)頻繁掛掉是同時執(zhí)行多個數(shù)據(jù)導(dǎo)出任務(wù)導(dǎo)致的。
雖然miniexcel提供了分頁導(dǎo)出的功能,但我們項目中并未廣泛使用這一特性,原因只有一個,使用分頁導(dǎo)出功能雖然能降低對內(nèi)存的使用,避免多人同時導(dǎo)出大批量數(shù)據(jù)導(dǎo)致系統(tǒng)內(nèi)存消耗過高最后被操作系統(tǒng)kill掉,但由于查詢本就耗時,分頁查詢會更加耗時,所以分頁功能目前只用于能用上索引的分頁查詢數(shù)據(jù)導(dǎo)出功能。
如果將報表導(dǎo)出操作的數(shù)據(jù)查詢從查MySQL數(shù)據(jù)庫改為查詢分析型數(shù)據(jù)倉庫adb,將miniexcel提供的分頁導(dǎo)出功能與adb的高性能查詢結(jié)合,就能完美的解決數(shù)據(jù)導(dǎo)出占用大量內(nèi)存導(dǎo)致系統(tǒng)頻繁掛掉的問題。這是一個報表數(shù)據(jù)導(dǎo)出相關(guān)業(yè)務(wù)功能的優(yōu)化建議。
“數(shù)據(jù)庫報表數(shù)據(jù)導(dǎo)出性能調(diào)優(yōu)方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
分享題目:數(shù)據(jù)庫報表數(shù)據(jù)導(dǎo)出性能調(diào)優(yōu)方法是什么
文章起源:http://aaarwkj.com/article30/pcscpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、、外貿(mào)建站、App開發(fā)、企業(yè)建站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)