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

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

數據庫配置優化

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

MyISAM,不支持事務處理,讀性能處理快,表級別鎖(開銷小,鎖定粒度大,發生死鎖概率高,相對併發也低)InnoDB,支持事務處理,設計目標是為大數據處理,行級別鎖(開銷大,鎖定粒度小,發生死鎖概率低,相對併發也高)

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

公共參數默認值:

MyISAM參數默認值:

InnoDB參數默認值:

查詢優化

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

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

重新定義表的關聯順序優化 MIN() 和 MAX() 函數提前終止查詢優化排序

模式優化

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