很多人都把“讀寫分離”當做數據庫性能優化的代名詞。其實不然,“讀寫分離”並不是萬能的,它只能解決某一部分性能問題。下面我寫寫我的理解筆記。
我們要優化數據庫,提升性能,首先要對數據庫的瓶頸進行分析。然後做出正確的優化方式。
那麼什麼是“讀寫分離”呢?
其實就是數據庫集羣,分成主庫和從庫。主庫作爲寫操作的數據庫,多個從庫作爲讀操作的數據庫。主庫和從庫通過同步機制進行同步,這樣的集羣叫做“分組”。
“讀寫分離”大法解決什麼性能瓶頸呢?當然是讀數據庫的瓶頸咯!因爲鎖的從在,如果在單一數據庫上,就會出現寫的時候不能讀,讀的時候不能寫。那這樣就會存在阻塞,對於一些場景來說這是災難性的。爲了解決這個問題,還能提升性能,我們都需要這樣一個“分組框架”。
集羣分組存在幾個問題我們需要考量:
- 主從同步的問題
- 讀線程池和寫線程池獨立(想想都覺得難,太難了)
- 還有要是線程池故障了怎麼辦
- 要是數據量太大呢,那成本就...
既然如此之“南”,那麼問題來了,有沒有更優秀的辦法解決這個瓶頸呢?當然有了,騷年你何不用緩存啊?、
- 由於緩存是緩存在內存中的,你讀的性能肯定要比存在磁盤裏強的多吧。
- 而且開發起來容易很多吧
- 成本肯定要比你多個數據庫少的多吧
當然緩存也有瓶頸;
- 數據量太大怎麼辦?
- 萬一壞掉了怎麼辦?
咋辦?用分佈式啊!