1. 程式人生 > >淺談資料庫讀寫分離、垂直拆分、水平拆分

淺談資料庫讀寫分離、垂直拆分、水平拆分

一、讀寫分離

二、垂直拆分、水平拆分
1.垂直劃分

(1)按照業務將表進行分類,垂直拆分是把不同的表拆到不同的資料庫中。資料庫專庫專用,比如拆為Products、Users、Deal庫。

缺點:

(1)部分業務表無法join,只能通過介面方式解決,提高了系統複雜度。

(2)受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件跟效能提高。

(3)事務處理複雜。

2.水平劃分

按行為拆分,水平拆分是把同一個表拆到不同的資料庫中。比如將User拆成了User1和User2。解決了大表瓶頸問題。

缺點:

 (1)拆分規則難以抽象。

 (2) 分片事務一致性難以解決。

 (3) 資料多次擴充套件難度跟維護量極大。

 (4) 跨庫join效能較差。

三、拆分的難點

1.兩種方式共同缺點

(1)引入分散式事務的問題。

(2)跨節點Join 的問題。

(3)跨節點合併排序分頁問題。

2.拆分方案及拆分原則

(1)最大可能的找到最合適的切分維度。

(2)由於資料庫中介軟體對資料Join 實現的優劣難以把握,而且實現高效能難度極大,業務讀取  儘量少使用多表Join -儘量通過資料冗餘,分組避免資料垮庫多表join。

(3) 儘量避免分散式事務。

(4)單表拆分到資料1000萬以內。