資料庫 分區分表分庫 讀寫分離(二)

2022-08-28 19:30:10 字數 972 閱讀 7025

其主要目的是為突破單節點資料庫伺服器的 i/o 能力限制,解決資料庫擴充套件性問題。

將系統中不存在關聯關係或者需要join的表可以放在不同的資料庫不同的伺服器中。

按照業務垂直劃分。比如:可以按照業務分為資金、會員、訂單三個資料庫。

需要解決的問題:跨資料庫的事務、jion查詢等問題。

例如,大部分的站點。資料都是和使用者有關,那麼可以根據使用者,將資料按照使用者水平拆分。

按照規則劃分,一般水平分庫是在垂直分庫之後的。比如每天處理的訂單數量是海量的,可以按照一定的規則水平劃分。需要解決的問題:資料路由、組裝。

對於時效性不高的資料,可以通過讀寫分離緩解資料庫壓力。需要解決的問題:在業務上區分哪些業務上是允許一定時間延遲的,以及資料同步問題。

垂直分庫-->水平分庫-->讀寫分離

對於不同的方式之間沒有嚴格的界限,特點不同,側重點不同。需要根據實際情況,結合每種方式的特點來進行處理。

選用第三方的資料庫中介軟體(atlas,mycat,tddl,drds),同時業務系統需要配合資料儲存的公升級。

單庫單錶是最常見的資料庫設計,例如,有一張使用者(user)表放在資料庫db中,所有的使用者都可以在db庫中的user表中查到。

隨著使用者數量的增加,user表的資料量會越來越大,當資料量達到一定程度的時候對user表的查詢會漸漸的變慢,從而影響整個db的效能。如果使用mysql, 還有乙個更嚴重的問題是,當需要新增一列的時候,mysql會鎖表,期間所有的讀寫操作只能等待。

可以通過某種方式將user進行水平的切分,產生兩個表結構完全一樣的user_0000,user_0001等表,user_0000 + user_0001 + …的資料剛好是乙份完整的資料。

隨著資料量增加也許單台db的儲存空間不夠,隨著查詢量的增加單台資料庫伺服器已經沒辦法支撐。這個時候可以再對資料庫進行水平拆分。

總的來說,優先考慮分割槽。當分割槽不能滿足需求時,開始考慮分表,合理的分表對效率的提公升會優於分割槽。

資料庫分割槽 分庫分表

分割槽表 當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間 物理檔案上 這樣查詢資料時,不至於每次都掃瞄整張表。分割槽表是由多個相關的底層表實現,這些底層表也是由...

資料庫分割槽 分表 分庫 分片

資料分割槽是一種物理資料庫的設計技術,它的目的是為了在特定的sql操作中減少資料讀寫的總量以縮減響應時間。分割槽並不是生成新的資料表,而是將表的資料均衡分攤到不同的硬碟,系統或是不同伺服器儲存介子中,實際上還是一張表。另外,分割槽可以做到將表的資料均衡到不同的地方,提高資料檢索的效率,降低資料庫的頻...

有關Mysql分庫分表,讀寫分離資料庫水平拆分

web伺服器一般都是乙個伺服器連線乙個資料庫的架構,可是隨著系統的使用,該架構已經不能滿足需求了,這裡使用的是c3p0的資料庫水平擴容。spring核心配置 id propertyconfigurer class org.springframework.beans.factory.config.pr...