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配置文件
閱讀更多 咱小二 的文章