1. 程式人生 > >資料庫高效能解決方案

資料庫高效能解決方案

高效能資料庫叢集的第一種方式是: 讀寫分離,其本質是將訪問壓力分散到叢集中的多個節點,但是沒有分散 儲存壓力;第二種方式是:分庫分表,既可以分散訪問壓力,又可以分散儲存壓力。

一 讀寫分離

  讀寫分離的基本原來是將資料庫讀寫操作分散到不同的節點上,讀寫分離的基本實現如下:

  1.  資料庫伺服器搭建主從叢集,一主一從,一主多從都可以
  2. 資料庫主機負責讀寫操作,從機只能負責讀操作
  3. 資料庫主機通過複製將資料同步到從機,每臺數據庫伺服器都儲存了所有的業務資料
  4. 業務伺服器將寫操作發給資料庫主機,將讀操作發給資料庫從機

    注意:這裡用的是主從叢集,而不是主備叢集,備機一般認為僅僅提供備份功能,不提供訪問功能;而從機可以理解為僕從,僕從是需要幫助主人幹活的,從機是需要提供讀資料的功能,所以使用主備還是主從,是要看場景的,這兩個詞不是完全等同的

  讀寫分離的實現邏輯並不是很複雜,但是在實際應用過程中需要應對複製延遲帶來的複雜性

       主從複製延遲會帶來一個問題:如果業務伺服器將資料寫入到資料庫主伺服器後立刻進行讀取,此時讀操作訪問的是從機,主機還沒有將資料複製到從機,到從機讀取資料是讀取不到最新資料的,業務上可能會存在問題。

       解決主從複製延遲有幾種常見的方法

  1. 寫操作後讀操作指定發給資料庫主伺服器
  2. 讀從機失敗後再讀一次主機,這就是通常所說的二次讀取,二次讀取和業務無繫結,只需要對底層資料庫訪問的API進行封裝即可,實現代價較小,不足之處在於如果存在很多的二次讀取,將大大增加主機的讀操作壓力。
  3. 關鍵業務讀寫操作全部指向主機,非關鍵業務採用讀寫分離