優化數據庫的吞吐量

問題
  • 最近出現頁面訪問非常慢,經過排查,發現數據庫服務器負載非常高,cpu佔用99%左右
  • 數據庫慢查詢日誌中的sql語句在正常負載下執行並不慢,但是在那一個時刻確是非常慢的
  • 日誌中,有大量的table lock,sleep等日誌信息
  • 數據庫使用的mysql,使用的是MyIsam存儲引擎
解決思路

       根據上述情況,明顯爲數據庫壓力過大,當然有很大可能是由於程序代碼造成的問題,但是修改程序代價高昂,時間成本也很高

  • 增加數據庫服務器的臺數
  • 因爲我們的服務的添加修改和刪除接口不多,寫入的需求較小,但是查詢的需求非常大,基本都是瀏覽和查詢,所以使用了讀寫分離,讀寫分離後數據庫存儲引擎就不需要調整了 
  • 寫入使用一臺服務器作爲master,查詢使用三臺slave服務器分載數據庫的讀

數據庫讀寫分離實現

  • 所有的數據庫接口都繼承於BaseDao,
  • BaseDao封裝了兩個數據源,一個是讀庫的數據源,一個是寫庫的數據源
  • BaseDao所有對讀封裝的接口都使用讀庫的數據源
  • BaseDao所有對寫封裝的接口使用寫庫的數據源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章