網(wǎng)站建設(shè)如何做好數(shù)據(jù)庫優(yōu)化_第1頁
網(wǎng)站建設(shè)如何做好數(shù)據(jù)庫優(yōu)化_第2頁
網(wǎng)站建設(shè)如何做好數(shù)據(jù)庫優(yōu)化_第3頁
網(wǎng)站建設(shè)如何做好數(shù)據(jù)庫優(yōu)化_第4頁
網(wǎng)站建設(shè)如何做好數(shù)據(jù)庫優(yōu)化_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

網(wǎng)速再怎么快,程序語言如JSP再怎么先進(jìn),如果你的數(shù)據(jù)庫沒有優(yōu)化好,查詢一個(gè)幾百條數(shù)據(jù)庫就很吃力的話,那么網(wǎng)站建設(shè)是失敗的,做好網(wǎng)站的優(yōu)化,數(shù)據(jù)庫是關(guān)鍵,大多的網(wǎng)站都是動態(tài)的,需要實(shí)時(shí)連接數(shù)據(jù)庫,那么數(shù)據(jù)庫的優(yōu)化問題就值得大家去了解了,下面長沙久安網(wǎng)絡(luò)公司為你分析數(shù)據(jù)庫如何優(yōu)化。

那什么是數(shù)據(jù)庫優(yōu)化了,數(shù)據(jù)庫優(yōu)化,簡單地說,是根據(jù)一開始網(wǎng)站數(shù)據(jù)庫設(shè)計(jì)而進(jìn)行的優(yōu)化。開始網(wǎng)站設(shè)計(jì)的時(shí)候,可能考慮的不是很全面。后期網(wǎng)站訪問量增加,出現(xiàn)頁面數(shù)據(jù)顯示過慢,程序執(zhí)行效果差等現(xiàn)象。優(yōu)化數(shù)據(jù)庫從而加速數(shù)據(jù)讀取,頁面訪問速度加快

A.sql語句優(yōu)化,指對查詢語句,增,刪,改等進(jìn)行優(yōu)化

B.增加索引,索引需要在數(shù)據(jù)量超大的時(shí)候加,一般不建議加,因?yàn)槊吭黾右粭l記錄會索引一次,添加時(shí)慢,可以到了一萬條或幾萬,一次生成索引,就方便多。

B.程序優(yōu)化,指如ASP,PHP,JSP等程序?qū)?shù)據(jù)庫的接口語句優(yōu)化。

數(shù)據(jù)庫優(yōu)化,只有優(yōu)化了數(shù)據(jù)庫,使其性能提升,運(yùn)用數(shù)據(jù)庫時(shí)才能方便快捷。目前web2.0的程序,很大瓶頸是數(shù)據(jù)庫的吞度量。不過,如何才能確定系統(tǒng)的瓶頸是數(shù)據(jù)庫呢,因?yàn)橹挥写_定數(shù)據(jù)庫是整個(gè)系統(tǒng)的瓶頸,我們才有必要去優(yōu)化他,畢竟,還有這么多需求等待我們?nèi)プ觥?/p>

知道數(shù)據(jù)庫是瓶頸了,如何來進(jìn)行優(yōu)化呢?

1我們第一個(gè)想到是看看數(shù)據(jù)庫的容量是不是太大了,如果數(shù)據(jù)庫表太大的話,索引文件也會比較大,每次的更新操作就會更加的費(fèi)時(shí)。需要考慮進(jìn)行分庫和分表了。

分庫分表按照一定的規(guī)則來對數(shù)據(jù)庫中的記錄進(jìn)行分區(qū)來存儲,一方面可以做到一定的負(fù)載均衡,將請求平分下來,每個(gè)區(qū)段去獨(dú)自承受;另一方面,分庫分表可以使我們存儲和操作更多的數(shù)據(jù)。

不過分庫分表需要多之前基于單庫的程序進(jìn)行修改,存在一定的風(fēng)險(xiǎn),因此,在程序設(shè)計(jì)之初就應(yīng)該考慮到分庫分表的需要,最好是將數(shù)據(jù)庫操作層獨(dú)立出來,便于擴(kuò)展和更改。

2如果數(shù)據(jù)庫表不是很大,但是查詢慢的話,我們需要檢查一下我們的sql查詢語句,利用mysql的explain語句看看是不是使用了索引,如果沒有使用索引,那我們需要在相應(yīng)的字段上建上索引,反復(fù)的使用explain,尋找到個(gè)一個(gè)合適的索引。

確定數(shù)據(jù)庫是瓶頸?

1如果程序設(shè)計(jì)良好,有一個(gè)數(shù)據(jù)庫操作邏輯層,可以從這個(gè)層的統(tǒng)計(jì)數(shù)據(jù)看到每個(gè)請求花費(fèi)的時(shí)間,如果平均時(shí)間已經(jīng)不能讓你容忍的話,數(shù)據(jù)庫已經(jīng)是瓶頸了。

2在數(shù)據(jù)庫的服務(wù)器上使用top命令,看看mysql服務(wù)器占用資源的情況,看看機(jī)子的平均負(fù)載。

如果服務(wù)器的平均負(fù)載已經(jīng)很高,mysql占用了塊100%的cpu資源,說明mysql服務(wù)器很忙了。

3在數(shù)據(jù)庫服務(wù)器上使用iostat命令,看看磁盤IO,如果block住的操作比較多的話,說明數(shù)據(jù)庫操作還是過于頻繁了,磁盤都響應(yīng)不急了。

4建議打開mysql的慢查詢?nèi)罩?,這樣grepselect看一下日志中的慢查詢的數(shù)量,如果數(shù)量較多,說明慢查詢的數(shù)量很多,需要進(jìn)行調(diào)整了。

5如果有一天數(shù)據(jù)庫無法插入了,需要檢查一下數(shù)據(jù)庫表是不是過大了。32位的操作系統(tǒng)上一個(gè)表最大的容量是2^32這么大。不過還是建議增加一個(gè)數(shù)據(jù)庫操作的邏輯層,在數(shù)據(jù)庫操作的前后記錄下操作的時(shí)間,進(jìn)行統(tǒng)計(jì)上報(bào),利用監(jiān)控程序來報(bào)警相關(guān)負(fù)責(zé)人,這樣可以及早的知道數(shù)據(jù)庫是瓶頸,提前做出優(yōu)化。

建索引時(shí)需要考慮:

1)數(shù)據(jù)庫的索引要做到越少越好:因?yàn)槊看胃露夹枰滤饕?,索引過多就會降低寫入的速度

2)最窄的字段放在鍵的左邊:這樣提高了索引中每一個(gè)點(diǎn)的基數(shù),帶來更好的索引讀寫性能

3)盡量避免filesort排序、臨時(shí)表和表掃描:對于大表,全表掃描會導(dǎo)致大量的磁盤IO的操作,會導(dǎo)致操作非常的緩慢

4)對于大表,盡量不要將索引建在字符串類型的列上,字符串的匹配是很費(fèi)時(shí)的,需要付出很高的性能代價(jià),如果一定有必要,建議對字符串列進(jìn)行hash后取一個(gè)整形的值來進(jìn)行索引。

3如果更新操作有點(diǎn)慢,而讀操作的響應(yīng)要求不需要很及時(shí)的話,可以考慮利用mysql的主從熱備來分擔(dān)讀寫的壓力。

畢竟對數(shù)據(jù)庫的操作,寫少讀多。因此,我們將對數(shù)據(jù)庫的寫操作放到mysql的主服務(wù)器上,利用mysql的熱備,我們在備份的數(shù)據(jù)庫服務(wù)器上進(jìn)行讀操作,由于可以有多個(gè)熱備mysql,于是可以將讀操作分布在多個(gè)熱備上面,從而將讀操作均衡開來,提高讀操作的性能。

4緩存的使用

緩存是一切后臺程序的根本,因?yàn)?0%的請求是對應(yīng)20%的數(shù)據(jù),我們只需要少量的內(nèi)存將20%的數(shù)據(jù)緩存起來,就可以大大的滿足我們系統(tǒng)需求,何樂而不為呢。

1)mysql設(shè)置中盡量增加keycache,thread

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論