1. 程式人生 > >資料庫分庫分表(持續更新中)

資料庫分庫分表(持續更新中)

今天學習了資料庫分表分庫,感覺記錄下一些東西以便以後的檢視。

1、資料庫建立索引,可以加快表資料的查詢,但是過多的索引,會佔用大量的記憶體,維護難度較大,因為索引底層的演算法是B-tree,樹的特點就是查詢資料快按時資料增刪改比較慢。

2、資料庫的表拆分,分為水平拆分,垂直拆分,水平垂直拆分(自定義的)。

3、mycat:資料庫的中介軟體,資料庫的代理,遮蔽物理資料庫的,支援多種拆分結構。

一、水平拆分:

1)、把同一個表拆到不同的資料庫中。

2)、垂直拆分後遇到單機瓶頸,可以使用水平拆分。

3)、水平拆分不是將表的資料做分類,而是按照某個欄位的某種規則來分散到多個庫之中,每個表中包含一部分資料。簡單來說,我們可以將資料的水平切分理解為是按照資料行的切分,就是將表中 的某些行切分到一個數據庫,而另外的某些行又切分到其他的資料庫中,主要有分表,分庫兩種模式,如圖:

 

優點:         1. 不存在單庫大資料,高併發的效能瓶頸。         2. 對應用透明,應用端改造較少。              3. 按照合理拆分規則拆分,join操作基本避免跨庫。         4. 提高了系統的穩定性跟負載能力。   缺點:         1. 拆分規則難以抽象。         2. 分片事務一致性難以解決。         3. 資料多次擴充套件難度跟維護量極大。         4. 跨庫join效能較差。

二、垂直拆分:

1)、垂直拆分是把不同的表拆到不同的資料庫中。

2)、按照業務將表進行分類,分佈到不同的資料庫上面,這樣也就將資料或者說壓力分擔到不同的庫上面。

優點:         1. 拆分後業務清晰,拆分規則明確。         2. 系統之間整合或擴充套件容易。         3. 資料維護簡單。   缺點:         1. 部分業務表無法join,只能通過介面方式解決,提高了系統複雜度。         2. 受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件跟效能提高。         3. 事務處理複雜。

摘自:https://www.cnblogs.com/firstdream/p/6728106.html