數據庫負載問題的架構思路

 

一:數據庫瓶頸的出現html

  隨着數據庫負載的增大,對數據庫讀寫性能的要求成爲瓶頸。redis

  通常狀況下,用戶對數據庫的操做,70%是讀,30%是寫,所以數據庫的性能瓶頸大多出如今讀上,想辦法提升讀取速度也是解決數據庫瓶頸的第一手段。算法

 

二:數據庫調優sql

  通常狀況下,不少性能問題不是真的由於硬件形成的,而是開發階段過於追求開發效率,致使索引沒建好、sql語句沒寫好或者循環嵌套查詢等。數據庫

  所以,當出現系統性能問題時,應該第一時間檢查代碼,進行優化。緩存

 

三:緩存架構

  咱們通常採用緩存中間件進行嘗試,利用redis或memcache集羣來承擔大部分的數據讀取任務。性能

  通常狀況下,到這一步已經足以知足大部分中小型項目的讀取需求了。優化

  注意:緩存方案僅適用於對一致性沒有強要求的業務場景,對於傳統企業ERP系統等流程環節緊密相扣的狀況,不適用。

.net

四:讀寫分離

  對數據庫進行「一主多從」的架構模式進行部署,將寫操做集中在主數據庫,讀操做分派到從數據庫上進行。

  數據庫讀寫分離的實現有多種:在代碼中本身實現算法進行分派,或者使用Mycat、Atlas等中間件進行分派,或者在數據庫主從部署時數據庫自己就提供此特性。

  注意:主從數據庫之間的備份存在必定延遲,所以對於業務流程緊密關聯的場景下也不適應,對於傳統ERP系統,能夠將報表、BI分析等業務功能進行讀寫分離,可是生產業務單據仍是要在主數據庫進行操做。

  代碼實現讀寫分離:http://www.javashuo.com/article/p-ryharzaw-k.html

  Atlas實現讀寫分離:https://blog.csdn.net/weixin_41488238/article/details/80196108

   ProxySQL實現讀寫分離:https://blog.csdn.net/jolly10/article/details/80391404

  Mycat實現讀寫分離:http://www.javashuo.com/article/p-wjnaiybn-bw.html

 

 五:分庫分表

  面對 寫操做密集型 系統,單純的主從備份讀寫分離並無解決 寫操做 形成的性能問題。

  此時須要進行分庫分表。

 

六:集羣

  todo。

相關文章
相關標籤/搜索