如何分析報表性能問題?
總的分析思路:從底層往頂層分析
服務器硬件、網(wǎng)絡帶寬、報表系統(tǒng)架構(gòu)、sql技術(shù)水平等等。
服務器硬件配置評估如服務器品牌,CPU、內(nèi)存、閃盤硬盤等,詢問同行或者供應商配置水平情況。
用戶的電腦的CPU和內(nèi)存配置也要簡單評估。
網(wǎng)絡帶寬評估如果報表是內(nèi)網(wǎng)的,也要評估內(nèi)網(wǎng)網(wǎng)絡的通暢情況。
系統(tǒng)技術(shù)性評估1.建立監(jiān)控機制
收集報表運行耗時、頻率、時機,收集對應時間段CPU,內(nèi)存,IO等關鍵硬件信息。我們使用的是Oracle數(shù)據(jù)庫,在后臺啟用AWR報表來監(jiān)控程序運行和硬件情況,另外使用zabbix定期監(jiān)控硬件運行情況。
2.抓出關鍵問題
通過第1步的監(jiān)控,我們就能獲取哪些報表程序運行得差,可以有針對性地思考解決辦法。這里需要考慮的點就比較多了:
數(shù)據(jù)量大小
sql書寫水平
后臺表設計的合理性,是否契合業(yè)務模型
查詢條件對應的索引設計
......
這些可以通過查看sql的執(zhí)行計劃,來點對點進行分析、解決。
如果報表是用內(nèi)存數(shù)據(jù)庫,比如hana,Oracle 12c等等,在sql執(zhí)行計劃方面需要關注,但更多地是關注表設計和報表業(yè)務邏輯算法,盡可能使用表關聯(lián)并發(fā)的方式開發(fā)。
運用以上思路和方式,基本可解決80%的報表性能問題。希望能幫助到你,謝謝!
下一篇DBA好考嗎