能夠讓你事半功倍的MySQL優化「套路」

能夠讓你事半功倍的MySQL優化“套路”

MySQL是一個功能強大的開源數據庫。隨著越來越多的數據庫驅動的應用程序,人們一直在推動MySQL發展到它的極限。這裡是101條調節和優化MySQL安裝的技巧。一些技巧是針對特定的安裝環境的,但這些思路是通用的。

能夠讓你事半功倍的MySQL優化“套路”

數據庫配置優化

MySQL應用最廣泛的有兩種存儲引擎:

  • MyISAM,不支持事務處理,讀性能處理快,表級別鎖(開銷小,鎖定粒度大,發生死鎖概率高,相對併發也低)
  • InnoDB,支持事務處理,設計目標是為大數據處理,行級別鎖(開銷大,鎖定粒度小,發生死鎖概率低,相對併發也高)
能夠讓你事半功倍的MySQL優化“套路”

根據這些方面看,使用InnoDB存儲引擎是最好的選擇,也是MySQL5.5+版本默認存儲引擎。每個存儲引擎相關運行參數比較多,以下列出可能影響數據庫性能的參數。

公共參數默認值:

能夠讓你事半功倍的MySQL優化“套路”

MyISAM參數默認值:

能夠讓你事半功倍的MySQL優化“套路”

InnoDB參數默認值:

能夠讓你事半功倍的MySQL優化“套路”

查詢優化

多數情況下,一條查詢可以有很多種執行方式,最後都返回相應的結果。優化器的作用就是找到這其中最好的執行計劃。

能夠讓你事半功倍的MySQL優化“套路”

MySQL 的查詢優化器是一個非常複雜的部件,它使用了非常多的優化策略來生成一個最優的執行計劃:

  • 重新定義表的關聯順序
  • 優化 MIN() 和 MAX() 函數
  • 提前終止查詢
  • 優化排序
能夠讓你事半功倍的MySQL優化“套路”

模式優化

  • 保持數據庫整理性
  • 舊數據歸檔 – 刪除多餘的行返回或搜索查詢
  • 將數據加索引
  • 不要過度使用索引,比較與查詢
  • 壓縮文字和BLOB數據類型 – 以節省空間和減少磁盤讀取次數
  • UTF 8和UTF16都低於latin1執行效率
  • 有節制地使用觸發器
  • 冗餘數據保持到最低限度 – 不重複不必要的數據
  • 使用鏈接表,而不是擴展行
  • 注意數據類型,真實數據中儘可能使用最小的一個
  • 如果其他數據經常被用於查詢時,而BLOB / TEXT數據不是,就把BLOB / TEXT數據從其他數據分離出來
  • 檢查和經常優化表
  • 經常重寫InnoDB表優化
  • 添加列時刪除索引,然後在添加回來索引
  • 針對不同的需求,使用不同的存儲引擎
  • 使用歸檔存儲引擎日誌表或審計表-這是更有效地寫道
  • 會話數據存儲在緩存的而不是MySQL中 – 緩存允許自動自動填值的
  • 存儲可變長度的字符串時使用VARCHAR而不是CHAR – 節省空間
  • 逐步進行模式的變化 – 一個小的變化,可以有巨大的影響
  • 在開發環境中測試所有模式,反映生產變化
  • 不要隨意更改你的配置文件中的值
  • 在MySQL的configs少即是多.
  • 有疑問時使用一個通用的MySQL配置文件
能夠讓你事半功倍的MySQL優化“套路”


分享到:


相關文章: