mysql产品优化方案_mysql的优化方案
簡介
在本文中,主要寫一下自己所查閱和理解的mysql優化方案.
我的理解是數據庫的優化對于我們'非專業'人員,mysql的優化也沒那么復雜了,真的要玩轉mysql的話,肯定得需要很多年的經驗了.
參考鏈接:
優化方案
1.搜索引擎的優化
mysql搜索引擎用的比較多的有以下三中
InnoDB
MEMORY
MyISAM
InnoDB的適用情況:InnoDB有處理事務的功能,對于需要處理大量事務的數據庫,InnoDB是比較合適的.
MEMORY的適用情況:一個字快!MEMORY是要把數據直接干到內存中,處理速度很快,但是,當服務器重啟或者宕機數據就沒了呢.所以,這個是適用臨時數據.
MyISAM的適用情況:速度快,不支持事務.適用于處理數據量大且不用大量處理事務的數據庫.
2.mysql添加索引
什么情況下適合添加索引
該字段數據量龐大;
該字段很少的DML操作(由于索引也需要維護,DML操作多的話,也影響檢索效率);
該字段經常出現在where條件中;
只要列中含有NULL值,就最好不要在此例設置索引,復合索引如果有NULL值,此列在使用時也不會使用索引
盡量使用短索引,如果可以,應該制定一個前綴長度
對于經常在where子句使用的列,最好設置索引,這樣會加快查找速度
對于有多個列where或者order by子句的,應該建立復合索引
對于like語句,以%或者‘-’開頭的不會使用索引,以%結尾會使用索引
盡量不要在列上進行運算(函數操作和表達式操作)
盡量不要使用not in和<>操作
注意:實際開發中會根據項目需求等綜合因素來做調整,添加索引并不能保證一定能夠提升檢索效率,索引添加不當也有可能會導致效率降低。
3.sql語句的優化
sql語句的優化,主要一點就是,盡量避免全文搜索,就是我要找個東西,我不能在那么多的數據中找到我想要的數據.最好就是,我可以在數據庫中搜索最小的范圍得到我想要的數據.
查詢時,能不要*就不用*,盡量寫全字段名
大部分情況連接效率遠大于子查詢
多使用explain和profile分析查詢語句
查看慢查詢日志,找出執行時間長的sql語句優化
多表連接時,盡量小表驅動大表,即小表 join 大表
在千萬級分頁時使用limit
對于經常使用的查詢,可以開啟緩存
其實還有很多的,主要把握"查最少的信息,獲得我所需要的內容"這個核心就行了.
4.表的優化
其實就一點:分塊!將數據分塊存放.
表的字段盡可能用NOT NULL
字段長度固定的表查詢會更快
把數據庫的大表按時間或一些標志分成小表
將表分區
比如一個城市里有很多的區,每個區里又有很多的街道小區,一個城市就顯得很規矩.如果所有的商店寫字樓居民樓都隨意布置,那這個城市就亂的一團糟了.
總結
優化數據庫有很多途徑.讓處理數據的效率越高越好,就醬.
總結
以上是生活随笔為你收集整理的mysql产品优化方案_mysql的优化方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑开机时出现lass.exe进程是病毒
- 下一篇: linux cmake编译源码,linu