高併發訪問資料庫優化方法
一、伺服器配置優化
我們需要根據應用伺服器的效能和併發訪問量的大小來規劃應用伺服器的數量。有一個使用原則是:單臺應用伺服器的效能不一定要求最好,但是數量一定要足夠,最好能有一定的冗餘來保障伺服器故障。特別是,在高併發訪問峰期間,適當增加某些關鍵應用的伺服器數量。比如在某些高峰查詢業務上,可以使用多臺伺服器,以滿足使用者每小時上百萬次的點選量。
二、使用負載均衡技術
負載均衡技術是解決集中併發訪問的核心技術,也是一種較為有效的解決網站大規模併發訪問的方法。實現負載均衡技術的主要裝置是負載均衡器伺服器。例如,我們把網站部署到在兩臺不同的伺服器之上(前提是要保證這2臺或者多臺伺服器都可以正常執行網站程式),這幾臺伺服器之間通過安裝特定的軟體實現負載均衡。那麼,某個時刻,當網站面臨大規模訪問時,使用者的請求會通過負載均衡程式,根據不同伺服器的繁忙和資源情況,自動分配到處理效能最優的伺服器上,從而將大規模使用者產生的高併發訪問均衡地分流到各個伺服器上。這樣就能大大減輕單臺伺服器處理高併發請求,確保整個網站系統面臨高負載時的可靠性。
三、資料庫結構設計
這部分是程式層的問題,通常是由軟體工程師進行負責,對SQL語句進行優化。我們可以採取的措施包括:對經常查詢的資料庫欄位做索引、對資料庫表進行分割槽操作(如對海量資料進行分割槽操作十分必要,例如針對按年份存取的資料,我們可以按年進行分割槽)、對資料庫查詢語句-SQL(減少冗餘的資料庫操作,提高查詢效率)進行優化等。
四、中介軟體的優化
所謂的中介軟體,聽起來會有點像很深的技術,其實就在我們身邊,各位站長朋友經常在網站部署的時候用到的Apache、IIS、Tomcat、WebLogic都是中介軟體。中介軟體主要位於客戶端/伺服器的作業系統之上,負責計算機的資源管理和網路通訊。舉個簡單的例子,我們在部署JAVA專案的時候,通常都是用Tomcat中介軟體,那麼Tomcat在預設情況下是不優化的,當在高併發的情況下,非常容易當機。關於Tomcat的優化給出以下幾個建議(本人在實際專案開發過程中覺得較為重要的幾點):①執行緒池優化;②啟動佔用記憶體優化;③日誌輸出優化;④HTTP壓縮優化;⑤配置檔案優化。
上面舉例的Tomcat中介軟體(也就是WEB伺服器)只是一個例子,不同的網站採用不同的架構,那麼對相應的中介軟體的優化也會有不同的方法,比如微軟的IIS有相應的配置引數,所以具體的優化方法可以根據專案的需要,查閱中介軟體的官方文件說明進行引數設定,這樣才能實現中介軟體的最優設定。
五、資料快取技術的使用
現在大多數大型網站都有使用快取技術,把使用者經常使用到的資料通過快取(Cache)技術進行管理,從而減輕伺服器重新請求的壓力,提高網站的訪問速度。快取技術有很多,這裡我個人根據實際的專案經驗,可以將其分成2種,即資料快取和頁面快取。
①所謂的是資料快取,指的是資料庫的資料不是直接傳輸,而是將資料呼叫到記憶體,然後從記憶體中讀取,從而可以大大提高讀取速度。資料快取技術有很多的方案,這裡由於開源、高效能等特點,建議使用Memcache來設定資料快取技術來加速動態web應用程式,減輕資料庫負載。
②頁面快取一定程度上是針對公共頁面,靜態化也是頁面快取的一種,將使用者經常訪問的頁面在伺服器的相應目錄下生成靜態頁面,當用戶再次訪問時,不需要對伺服器進行動態請求,而只需要對快取下來的html頁面直接讀取,這樣訪問的效率就可以得到有效的提高。