正確理解“讀寫分離”

很多人都把“讀寫分離”當做數據庫性能優化的代名詞。其實不然,“讀寫分離”並不是萬能的,它只能解決某一部分性能問題。下面我寫寫我的理解筆記。

我們要優化數據庫,提升性能,首先要對數據庫的瓶頸進行分析。然後做出正確的優化方式。

那麼什麼是“讀寫分離”呢?

其實就是數據庫集羣,分成主庫從庫。主庫作爲寫操作的數據庫,多個從庫作爲讀操作的數據庫。主庫和從庫通過同步機制進行同步,這樣的集羣叫做“分組”。

“讀寫分離”大法解決什麼性能瓶頸呢?當然是讀數據庫的瓶頸咯!因爲鎖的從在,如果在單一數據庫上,就會出現寫的時候不能讀,讀的時候不能寫。那這樣就會存在阻塞,對於一些場景來說這是災難性的。爲了解決這個問題,還能提升性能,我們都需要這樣一個“分組框架”。

集羣分組存在幾個問題我們需要考量:

  1. 主從同步的問題
  2. 讀線程池和寫線程池獨立(想想都覺得難,太難了)
  3. 還有要是線程池故障了怎麼辦
  4. 要是數據量太大呢,那成本就...

既然如此之“南”,那麼問題來了,有沒有更優秀的辦法解決這個瓶頸呢?當然有了,騷年你何不用緩存啊?、

  1. 由於緩存是緩存在內存中的,你讀的性能肯定要比存在磁盤裏強的多吧。
  2. 而且開發起來容易很多吧
  3. 成本肯定要比你多個數據庫少的多吧

當然緩存也有瓶頸;

  1. 數據量太大怎麼辦?
  2. 萬一壞掉了怎麼辦?

咋辦?用分佈式啊!

 

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