MySql 效能憂化隨記

來源:互聯網
上載者:User

標籤:

    前一段時間接觸MySql 伺服器,關於查詢憂化方面整理,最佳化主要唯繞幾個工具函數 : show profiling  , explain ,  索引 , limit

    如果上司抱怨伺服器查詢太慢,這時候,你可能會說,可能是網路不好,伺服器效能太差。給上司一個合理的說法,私底下,是什麼原因,心中要有數。從用戶端發起http 請求,到服務端後台業務處理,具體到資料庫相關。大多數效能問題出現在資料庫上。通常會有這樣情況,伺服器上線之時,效能還不錯,半年之後,網站慢的像蝸牛。在這段時間,在大的架構不變情況,變化部份是資料庫檔案暴增。因此很可能是資料庫拖後腿了。

       解決辦法有許多種:

             1.業務重構,簡化現有業務。

             2.增加資料緩衝組件

             3.最佳化現有資料庫或表結構

       假設現在已經拿到一段sql 語句,如何對這段sql 做常歸效能分析呢? MySql 提供一些常用工具。首先 將 sql 語句前加 explain ,  mysql 會列印出查詢計劃:例如:

       explain select * from test limit 1

     

      

   這裡有許多列,具體含義可另行搜尋 mysql explain 。 重點部份: type possible_key , key , key_len , ref , rows , extra 。

   type 屬性:  ALL , INDEX , RANGE , REF , EQ_REF , CONST , 從左往右,表現從差到優。

   ALL 表明: 當前查詢執行全表掃描, 如果在資料量較大表中執行篩選,  顯示全表掃描,表明需要添加索引了。

   possible_keys 屬性: 例舉當前sql 可用索引

   key:當前查詢實際使用索引 (留意關鍵字 force index(...)  , ignore index(...))

   key_len : 當前使用索引顆粒大小 

   ref : where 子條件哪些列被索引使用

   rows:執行查詢過程中,掃描了多少行

   extra : 額外做了哪些動作,如 Using temporary , Using index , Using  filesort.

 

例如: explain select SQL_NO_CACHE * from test where year = 2015 and month = 2  ;

以上樣本表明:使用了索引 type: ref  , 其中 possible_keys 枚舉了能夠使用的索引,key 註明實際使用的索引 , key_len 表明索引長度 10 byte, 該值並不是固定的,本例中使用了複合索引,隨著複合索引命中的例數增多,key_len 會變大。 ref : const , const , 表明命中複合索引前兩列, 如果是: ref:const , const , const ; key_len 的值是15。

rows: 掃描表的行數 ,  值愈小愈好。 limit 關鍵字無法影響 rows 大小。

 

例如: explain select SQL_NO_CACHE  * from test where year = 2015 and month = 2 and date = 20 limit 10

請注意,在末尾加了 limit 10 , 但是 MYSQL 仍然掃描了 136176 行 。

 

開啟 MYSQL 執行耗時統計 :

set profiling = 1 ;

顯示最近查詢sql  耗時

show profiles ;

 

 

顯示指定查詢詳細耗時show profile for query [id]

 

MySql 效能憂化隨記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.