鄭州北大青鳥:MYSQL優(yōu)化之降低磁盤搜索頻率
今天我們鄭州計算機(jī)培訓(xùn)學(xué)校的老師給大家分享的是數(shù)據(jù)庫相關(guān)知識:MYSQL優(yōu)化之降低磁盤搜索頻率。
眾所周知,目前,磁盤搜索是性能的很大瓶頸。這個問題在數(shù)據(jù)大量增長以至于無法使用有效的緩存時尤為明顯;蚨嗷蛏匐S即訪問大數(shù)據(jù)庫時,就必然會有至少一次磁盤搜索來讀數(shù)據(jù),兩次磁盤搜索來寫數(shù)據(jù)。最小化這個問題的辦法就是降低磁盤搜索次數(shù)。
增加有效磁盤馬達(dá)數(shù)量(這能減少搜索時的開銷)或者將不同的文件鏈接到不同的磁盤上又或者分盤:
使用符號鏈接
意思是,把 MyISAM 表的索引文件和/或數(shù)據(jù)文件從數(shù)據(jù)目錄下通常的地方鏈接到其他磁盤上(這也是分盤)。如果這個磁盤沒有其他用途的話,這對讀寫次數(shù)都比較好。詳情請看%26quot;7.6.1 Using Symbolic Links%26quot;。
分盤
如果有好幾個磁盤,就把第一個區(qū)塊放在第一個磁盤,把第二個區(qū)塊放在第二個磁盤,以此類推。這意味著正常的數(shù)據(jù)大小比分盤后的數(shù)據(jù)小(或者完全一樣),這能獲得更好性能。分盤完全依賴于操作系統(tǒng)以及分盤的大小,因此要用不同的分盤大小基準(zhǔn)測試應(yīng)用程序。詳情請看%26quot;7.1.5 Using Your Own Benchmarks%26quot;;鶞(zhǔn)測試的速度的不同完全依賴于分盤大小。依賴分盤設(shè)置參數(shù)以及磁盤數(shù)量,會得到大量不同的測量結(jié)果。必須隨機(jī)或者順序選擇優(yōu)化方法。
可能會為了可靠性采用 RAID 0+1,這時,就必須用 2*N 個驅(qū)動去來保存 N 個驅(qū)動器上的數(shù)據(jù)。如果有足夠的內(nèi)存這可能是最好的方法。不過,這也需要使用卷管理軟件來有效地管理數(shù)據(jù)。
另一個好辦法是RAID的級別根據(jù)數(shù)據(jù)的重要性而定。例如,把能重新生成的有點重要的數(shù)據(jù)保存在RAID 0磁盤上,把很重要的數(shù)據(jù)如主機(jī)信息日志等保存在RAID 0+1或者RAID N磁盤上。RAID N在有很多個寫入時可能會有問題,因為會同時請求更新同一個字節(jié)位。
在Linux上,可以用 hdparm 來配置磁盤接口以獲得更好的性能(在負(fù)載下高達(dá)100%也不是不可能的)。以下 hdparm 配置選項對MySQL就很合適,對其他應(yīng)用程序可能也不錯:
hdparm -m 16 -d 1
注意,當(dāng)使用這個命令之后性能和可靠性會依賴硬件,因此我們強(qiáng)烈建議在使用 hdparm 后一定要做測試。請查閱 hdparm 的手冊。如果沒有正確使用 hdparm,則可能導(dǎo)致文件系統(tǒng)沖突,所以在試驗之前備份一下。
還可以在數(shù)據(jù)庫使用的文件系統(tǒng)上設(shè)置其參數(shù):如果無需知道文件的最后訪問時間(這對數(shù)據(jù)庫系統(tǒng)沒用),則在掛載文件系統(tǒng)時使用 -o noatime 選項。這就會略過更新文件系統(tǒng)節(jié)點的最后訪問時間,也就減少了磁盤搜索。在很多操作系統(tǒng)上,可以在掛載文件系統(tǒng)是使用 -o async 選項以異步更新它。如果你的機(jī)器相當(dāng)?shù)姆(wěn)定,這會帶來性能提升但可靠性并沒犧牲多少(默認(rèn)只能在Linux上這樣用)。
使用符號鏈接
可以把數(shù)據(jù)表或者數(shù)據(jù)庫移動到別的目錄下,然后用符號鏈接到新的位置來代替。你可能想這么做,例如,想要把表分布到不同的磁盤上以提高系統(tǒng)速度,就把它們移動到有更多剩余空間的磁盤上。
建議只是把數(shù)據(jù)庫鏈接到其他磁盤上,數(shù)據(jù)表的鏈接是最后的選擇。
在 Unix 上符號鏈接數(shù)據(jù)庫
在Unix上,給數(shù)據(jù)庫做符號鏈接的方法是先在其他磁盤上創(chuàng)建一個目錄,然后再把它鏈接到MySQL數(shù)據(jù)文件目錄下。
shell%26gt; mkdir /dr1/databases/test
shell%26gt; ln -s /dr1/databases/test /path/to/datadir
MySQL不支持把一個目錄鏈接成多個數(shù)據(jù)庫。只要沒有在數(shù)據(jù)庫間做符號鏈接,那么它就沒問題。假使在MySQL數(shù)據(jù)文件目錄下已經(jīng)有一個數(shù)據(jù)庫 db1 了,然后把 db1 鏈接到 db2 :
本文源自:http://轉(zhuǎn)載請注明出處! 更多數(shù)據(jù)庫知識交流請鏈接:http:///html/jsjl/sjk/
本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學(xué)習(xí)技巧、就業(yè)案例、招生詳情等問題,可以對在線咨詢老師進(jìn)行一對一問答!
推薦資訊
- 鄭州北大青鳥翔天信鴿校區(qū)就業(yè)喜... 2021-03-23
- 北大青鳥,IT夏令營火熱報名中,... 2012-10-13
- 河南北大青鳥校區(qū)地址最新乘車路... 2012-09-13
- 潘霜霜參加IT培訓(xùn)實現(xiàn)人生華麗轉(zhuǎn)... 2012-10-13
- 選擇北大青鳥軟件專業(yè),有機(jī)會免... 2012-10-13
熱點資訊
- 學(xué)習(xí)SQL數(shù)據(jù)庫有哪些方法?... 2018-09-07
- 河南IT培訓(xùn):SQLSERVER2000T-SQL的... 2018-09-07
- 使用access數(shù)據(jù)庫有哪些好處呢?... 2018-09-07
- 網(wǎng)站數(shù)據(jù)庫老是被入侵該怎么辦?... 2018-09-07
- 半小時讓你快速MySQL 入門... 2018-09-07