1. 程式人生 > >【MySQL】-效能調優

【MySQL】-效能調優

mysql這塊我們是用的druid監控,在監控頁面上可以看到查詢次數和查詢時間
在這裡插入圖片描述

1.查詢次數太多的就放到快取裡,我們曾經遇到過一條特別不起眼的SQL查詢特別慢,後來發現他的呼叫特別頻繁,因為好幾個服務都在頻繁呼叫這個SQL,我們就把這條SQL查詢出來的資料儲存快取裡

2.如果是查詢時間太長的,我們會用explain進行分析,檢視索引是不是有失效,沒有命中的情況。索引優化請看此篇文章。
我們遇到過模糊查詢的時候特別慢,我們有個功能輸入學生的名字在全校範圍內查詢然後把他的學院班級年級都插入來,這個查詢是可以模糊匹配的,但是查的時候很慢,加了索引之後也慢,後來發現是因為like左邊也加%,而且用的是select * ,然後就修改了一下,select 索引name+學院id,索引就可以用了

3.如果索引也沒有問題的話,可以從其他方面再考慮一下SQL。
①比如說,我們之前有個業務是根據學生的學號去查學生的宿舍,我們能確定一個學生是隻能住一個宿舍的,所以查詢的時候要加上 limit 1,MySQL在查詢到一條資料之後,會立即停止搜尋,這會帶來效能上的提升
②還有查詢“男”“女”這種,這種資料是不需要加索引的,加上效果也不大,所以就把欄位型別設定成enum型別,enum儲存的是tinyint型別,因為在MySQL中,ENUM型別被當作數值型資料來處理,而數值型資料被處理起來的速度要比文字型別快得多。這樣,我們又可以提高資料庫的效能。
③檢視select * 的情況,根據業務是不是需要把所有資料都查出來,如果不是,需要哪個欄位查哪個欄位