本文提要

從編碼角度來優(yōu)化數(shù)據(jù)層的話,我首先會去查一下項目中運行的sql語句,定位到瓶頸是否出現(xiàn)在這里,首先去優(yōu)化sql語句,而慢sql就是其中的主要優(yōu)化對象,對于慢sql,顧名思義就是花費較多執(zhí)行時間的語句,它帶來的影響也比較惡劣,首先是執(zhí)行時間過長影響數(shù)據(jù)的返回速度,其次,慢sql的長時間執(zhí)行也會消耗和占用mysql的系統(tǒng)資源,影響其他的sql語句執(zhí)行,過多的慢sql極其影響性能,如果系統(tǒng)流量或者并發(fā)量較大的情況下,過多的執(zhí)行慢sql很有可能造成mysql的死鎖以致于mysql服務(wù)無法正常使用。
druid整合到項目中以及druid監(jiān)控的開啟已經(jīng)持續(xù)了一段時間,因此對于慢sql的監(jiān)控和整理也大致有了一些結(jié)果,本篇文章就試著從日志文件和監(jiān)控面板中找出幾條慢sql并進行優(yōu)化。

優(yōu)化步驟

總結(jié)了一下,大致步驟如下:

  • 定位優(yōu)化對象的性能瓶頸;

  • 明確優(yōu)化目標;

  • 從explain入手分析;

  • 找到優(yōu)化方法;

找出慢sql

首先進入druid監(jiān)控后臺,查看一下這幾天的運行日志后,慢sql的大致情況,如圖:
電腦培訓,計算機培訓,平面設(shè)計培訓,網(wǎng)頁設(shè)計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

從監(jiān)控后臺看到的數(shù)據(jù)只是一個粗略的統(tǒng)計,是一個總覽記錄,想要看到詳細的執(zhí)行記錄及其中的慢sql統(tǒng)計可以通過日志文件,這個功能也已經(jīng)整合到項目中,直接在tomcat的logs目錄即可查看。
電腦培訓,計算機培訓,平面設(shè)計培訓,網(wǎng)頁設(shè)計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

日志文件內(nèi)容節(jié)選:

//1.圖片表查詢sql
[10:13:37] StatFilter - slow sql 1572 millis. 
select * from ssm_picture         WHERE  type = ? and grade = ?          
 limit ?,?
["1","1",0,10]

...
//2.更新文章表sql[14:19:12] StatFilter - slow sql 1926 millis. 
update ssm_article        set
        article_title=?,article_content=?,
        add_name=?        where id=?
["11","<p>1324354657usdfghjnkm,zxvb nm,,fgfhjtfggggggggggggggggggg<br/></p>","22","1033"]

...

//3.文章表查詢sql[15:07:04] StatFilter - slow&n
        
		

網(wǎng)友評論