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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

B.增加索引,索引需要在數(shù)據(jù)量超大的時候加,一般不建議加,因為每增加一條記錄會索引一次,添加時慢,可以到了一萬條或幾萬,一次生成索引,就方便多。

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

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

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

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

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

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

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

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

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

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

如果服務器的平均負載已經很高,mysql占用了塊100%的cpu資源,說明mysql服務器很忙了。

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

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

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

建索引時需要考慮:

1)數(shù)據(jù)庫的索引要做到越少越好:因為每次更新都需要更新索引,索引過多就會降低寫入的速度

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

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

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

3如果更新操作有點慢,而讀操作的響應要求不需要很及時的話,可以考慮利用mysql的主從熱備來分擔讀寫的壓力。

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

4緩存的使用

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

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

溫馨提示

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

評論

0/150

提交評論