A. 怎麼減輕網站資料庫的壓力
fikker 讓網站響應加速 10 倍以上, 減少資料庫壓力 90% 以上:
頁面緩存:目前網上的大部分頁面都是由網站程序動態生成的,例如 ASP,PHP,JSP等頁面都是網站動態生成的,這種頁面在被生成的時候,大部分都會讀取資料庫,在訪問量比較小的時候,資料庫尚可勝任,在訪問量較大的時候,資料庫就會嚴重延遲甚至不堪重負。因為資料庫的大部分數據存放在硬碟上的,並且硬碟數據交換的能力相對於內存來說是極低的(相差10倍以上),所以當資料庫頻繁讀取硬碟數據的時候,網站系統的負載能力便會大大降低,硬碟IO就成為了網站響應速度的瓶頸。Fikker 提供了動態頁面緩存能力,對於頻繁讀取的動態頁面,可以將其緩存在 Fikker 頁面緩存中,當瀏覽器訪問的時候,就不再需要網站程序重新讀取資料庫和重新編譯頁面,系統的吞吐能力大大的提高,極大的抵消了頻繁讀取資料庫帶來的瓶頸,網站的響應速度會有 10 倍以上的提升。加速舉例:一個熱門商品或熱點新聞頁面,1分鍾內有1萬次的訪問量,如果這些頁面都由網站生成,就會讀取1萬次資料庫並重復生成1萬個的頁面;如果 Fikker 將這個頁面緩存1分鍾,一分鍾內只會讀取1次資料庫並生成1次頁面,網站和資料庫的負荷就會大大的降低(10倍以上),所以越是負荷較大的網站,加速效果感覺上越明顯。
壓縮傳輸:絕大部分基於文本的頁面(asp, php, jsp, html, js, css, txt等)進行 gzip/compress/deflate 壓縮以後,相對於非壓縮頁面會減少大約75%的尺寸。例如:一個100K位元組的頁面,壓縮以後大約在20K - 25K位元組左右,如果這種壓縮過的頁面被緩存後再傳輸,會顯著的提升傳輸效率,加快網頁傳輸載入的速度,而且還很經濟(減少了帶寬支出)。Fikker 內置了 gzip 頁面壓縮功能,既減少了內存的佔用,提升了傳輸效率,又降低了帶寬的佔用。
B. 資料庫的讀寫壓力太大了,請問有什麼方法
這要根據是讀壓力大還是寫壓力大分別考慮。
讀壓力也要看,是單個表單個記錄的查詢壓力太頻繁,還是多個表多行記錄的統計計算壓力大。
通常你可以考慮mysql當中,一個master用於寫入,多個slave用於查詢。
單行記錄的查詢還可以結合memcached這樣的緩存。
這些都需要根據經驗,規劃好整個系統的架構模式,並不斷進行調整和優化。
C. 如何解決資料庫負載過大的問題
市面上存在兩種資料庫負載均衡的思路:1. 基於資料庫連接的負載均衡:例如總共有100個資料庫連接,50個連接登錄到資料庫機器A,另外50個連接登錄到資料庫機器B,這樣每個連接中接下來的所有請求全都是發往同一台資料庫機器的。 這種資料庫負載均衡的思路模擬了WEB上的負載均衡方法,但是由於WEB連接是短時間連接(連接建立後,獲取需要的HTML等資源後,連接馬上被關閉),而資料庫連接是長時間連接( 連接建立後,可長時間保持,客戶可不停向資料庫發送SQL請求,資料庫做出回答,如此不斷循環直到連接被人為或因錯而斷開為止),因此這種資料庫負載均衡思路存在著明顯的缺點:有可能會發生絕大部分的請求壓力都集中到某台資料庫機器上去,從而使得負載均衡效果失效。2.基於批處理請求的負載均衡:在建立資料庫連接的時候,會同時與每台資料庫伺服器建立連接,之後針對客戶端的每次請求,都會根據負載均衡演算法,獨立地選出某個資料庫節點來執行這個請求。此種思路符合資料庫長時間連接的特徵,不存在上面所述的基於連接的負載均衡方法的缺點。市面上的負載均衡廠商,既有基於連接的,也有基於批處理請求的,用戶需仔細辨別才能找到自己想要的合適產品。
D. Java中怎麼把資料庫中的表做成定時任務,存入緩存,減輕頻繁直查資料庫時,資料庫的壓力
根據你的想法,建議將兩種方式整合下,建議如下設置:
接根據業務層的需要,把頻繁使用的多個表數據進行整合,並利用視圖的方式進行訪問,這樣既能減少數據表的壓力,也能保持數據的准確性;
根據向系統設定場景,將經常使用到的數據存放在緩存中,緩存建議使用radis等非關系型資料庫;
根據數據量確定,數據量比較大的,可以使用中間表等方式,如果數據量小而多的,放在緩存中最好,提高命中率。