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