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