mysql效能最佳化

來源:互聯網
上載者:User

標籤:第一個   nio   資料庫最佳化   資料   頻率   業務   掃描   提高   垂直   

效能最佳化

myql資料庫最佳化的原則:

1.減少系統的瓶頸。

2.減少資源的佔用。

3.增加系統的反應速度。

 

 

最佳化查詢

1.索引對查詢的影響

比如有一個表student表,有id、name、sex、no,4個欄位,裡面有20條記錄,如果沒有索引時,查詢no=20的學生。

sql語句是SELECT * from student WHERE no =‘20‘。分析當前sql :執行 explain SELECT * from student WHERE no =‘20‘

 

這樣可以看到rows是20,也就是說查詢掃描了20條記錄。

  • select_type:SIMPLE,這個不是很關鍵,只是表示這是一次簡單的查詢,沒有join,沒有union,沒有中間表
  • type:ALL,表示該次SQL進行了全表查詢

在no欄位使用索引後

看到結果是1,證明查詢的時候只掃描了一條記錄。查詢速度自然比不使用索引快。而且possible_keys和key都可以說明使用了索引。

 

2.使用索引查詢

(1)使用like查詢時

如果第一個字元是%,索引不起作用,只要%不在第一位置索引才起作用。

(2)使用多列索引查詢

mysql可以為多個欄位建立索引,一個索引可以包含16個欄位,只有查詢條件中使用了這些欄位的第一個欄位時,索引才有用。

(3)使用or關鍵字查詢

查詢條件只有or關鍵字,且or前後兩個條件都是索引時,查詢才會使用索引。

3.避免使用select *

查詢內容越多,自然越慢。

4.永遠為每張表設定一個id

表裡設定一個id作為主鍵,最好是int類型,並加上自增標識。使用varchar當做主鍵會使效能下降。

 

資料庫結構最佳化

1.將欄位很多的表分解為多個表

對於欄位很多的表,如果有些欄位使用的頻率很低,可以將這些欄位分離出來形成新表。因為一個表資料量很大時,會由於使用頻率低的欄位存在而變慢,通過分解欄位,可以提高表的查詢效率。

2.增加中間表

對於需要經常聯集查詢的表,可以建立中間表以提高查詢的效率。把經常要聯集查詢的資料插入到中間表,然後將原來聯集查詢改為對中間表的查詢,以此來提高表的查詢效率。

3.最佳化插入記錄的速度

影響插入速度主要是索引、唯一性校正、一次插入的條數。以InnoDB表為例。

(1)禁止唯一性檢查

插入資料時,mysql會對插入的記錄。唯一性校正會降低插入記錄的速度。等記錄插入完畢後再開啟。

SET UNIQUE_CHECKS = 0;開啟
SET UNIQUE_CHECKS = 1;關閉

(2)禁止外鍵檢查

插入資料之前禁止對外鍵的檢查,資料插入後再恢複對外鍵的檢查。

SET foreign_key_checks = 0;
SET foreign_key_checks = 1;

(3)禁止自動認可

插入資料之前禁止事務的自動認可,資料匯入後再恢複。

SET autocommit = 0;
SET autocommit = 1;

 

資料庫最佳化

1.最佳化表的結構,對常用欄位和非常用的欄位分開儲存。

2.最佳化sql合理使用索引。

3.做資料庫讀寫分離,減少io壓力。因為資料庫對記錄做持久化並儲存在磁碟上,對磁碟的io是非常消耗效能的操作,因此,讀寫在一個庫中會大大增加io的壓力。

4.嘗試使用緩衝,不要讓資料都走資料庫。

5.對業務做垂直分割。

6.對錶做水平分割。

合理使用所以對效能提升至關重要。

如果索引建立在重複資料很少的欄位上效果明顯,對於重複資料量大的欄位就不見得會提升效率。

對索引列使用函數會導致索引失效。技巧:對索引列不使用函數而對常數項使用函數,索引就有效了。

 

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.