淺談資料庫讀寫分離、垂直拆分、水平拆分
阿新 • • 發佈:2018-12-08
一、讀寫分離
二、垂直拆分、水平拆分
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萬以內。