MySQL垂直切分和水平切分概念和優缺點介紹

kunlunzhiying發表於2017-03-15
資料的切分(Sharding)根據其切分規則的型別,可以分為兩種切分模式。一種是按照不同的表(或者Schema)來切分到不同的資料庫(主機)之上,這種切可以稱之為資料的垂直(縱向)切分;另外一種則是根據表中的資料的邏輯關係,將同一個表中的
資料按照某種條件拆分到多臺資料庫(主機)上面,這種切分稱之為資料的水平(橫向)切分。

垂直切分
一個資料庫由很多表的構成,每個表對應著不同的業務,垂直切分是指按照業務將表進行分類,分佈到不同的資料庫上面,這樣也就將資料或者說壓力分擔到不同的庫上面, 如下圖:



垂直切分的優缺點介紹:
優點:
拆分後業務清晰,拆分規則明確。
系統之間整合或擴充套件容易。
資料維護簡單。
缺點:
部分業務表無法join,只能通過介面方式解決,提高了系統複雜度。
受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件跟效能提高。
事務處理複雜。
由於垂直切分是按照業務的分類將表分散到不同的庫,所以有些業務表會過於龐大,存在單庫讀寫與儲存瓶頸,所以就需要水平
拆分來做解決。


水平切分
相對於垂直拆分,水平拆分不是將表做分類,而是按照某個欄位的某種規則來分散到多個庫之中,每個表中包含一部分資料。簡單來說,我們可以將資料的水平切分理解為是按照資料行的切分,就是將表中的某些行切分到一個資料庫,而另外的某些行又切
分到其他的資料庫中,如下圖:



水平切分的優缺點介紹:
優點:
拆分規則抽象好,join操作基本可以資料庫做。
不存在單庫大資料,高併發的效能瓶頸。
應用端改造較少。
提高了系統的穩定性跟負載能力。
缺點:
拆分規則難以抽象。
分片事務一致性難以解決。
資料多次擴充套件難度跟維護量極大。
跨庫join效能較差。


垂直切分和水平切分共同的特點和缺點有:
引入分散式事務的問題。
跨節點Join的問題。
跨節點合併排序分頁問題。
多資料來源管理問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135342/,如需轉載,請註明出處,否則將追究法律責任。

相關文章