SQL性能優化的思考

實際開發過程中,SQL性能的優化是最常見的需要思考的問題。

那麼實際我們再開發過程中應該如何考慮?或者別人問你時,大概怎麼回答幫助別人?總結下,大概有如下幾點:

SQL 優化的原則

1,優先優化高併發低消耗的SQL;

    1,1小時請求1W次,1次10個IO;
    2,1小時請求10次,1次1W個IO;
從IO消耗,優化難度,CPU消耗進行比較;

2,定位性能瓶頸;

採用一些數據庫比較常用的工具進行定位,有針對性解決問題

    1,SQL運行較慢有兩個影響原因,IO和CPU,明確性能瓶頸所在;
    2,明確優化目標;

例如MSQL常用:

①任何SQL的優化,都從Explain語句開始;Explain語句能夠得到數據庫執行該SQL選擇的執行計劃;
②首先明確需要的執行計劃,再使用Explain檢查;
③使用profile明確SQL的問題和優化的結果;

3、永遠採用小結果驅動大結果;

注意:不是小表驅動大表,是小結果集驅動大結果集;

4、在索引中完成排序;

5、使用最小Columns;

1,特別是需要使用column排序的時候;
2,減少網絡傳輸數據量;
3,MYSQL排序原理,是把所有的column數據全部取出,在排序緩存區排序,再返回結果;如果column數據量大,排序區容量不夠的時候,就會使用先column排序,再取數據,再返回的多次請求方式;
 

6、使用最有效的過濾條件

1,過多的WHERE條件不一定能夠提高訪問性能;
2,一定要讓where條件使用自己預期的執行計劃;

7、避免複雜的JOIN和子查詢

1,複雜的JOIN和子查詢,需要鎖定過多的資源,MYSQL在大量併發情況下處理鎖定性能下降較快;
2,不要過多依賴SQL的功能,把複雜的SQL拆分爲簡單的SQL;
3,MySQL子查詢性能較低,應儘量避免使用;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章