天天看點

分庫分表

1、為什麼要分庫分表

當一張表的資料達到幾千萬時,查詢一次所花的時間會變長。這時候,如果有聯合查詢的話,可能會卡死在那兒,甚至把系統給拖垮。

而分庫分表的目的就在于此:減小資料庫的負擔,提高資料庫的效率,縮短查詢時間。另外,因為分庫分表這種改造是可控的,底層還是基于rdbms,是以整個資料庫的運維體系以及相關基礎設施都是可重用的。去中心化。

2、分庫分表的手段有哪些?

1)垂直分表,按照業務,比如一張user表,userbase表做登入用,userinfo表做個人資訊修改用

分庫分表

 2)垂直分庫,按照業務來,訂單資訊都在一個庫,使用者資訊都在一個庫,商品資訊都在一個庫

分庫分表

 垂直拆分的特點:每個庫每個表的結構都不一樣;每個庫每個表的資料至少一列一樣;每個庫每個表的并集是全量資料。

優點:拆分後業務清晰,資料維護簡單,按照不同業務放到不同的機器上。

缺點:

一:如果的單表的資料量大,那麼單表的讀寫壓力依然比較大。

二:受某種業務的影響到庫的瓶頸,比如雙11,訂單業務會大量新增,其他會員庫和商品庫查找多

三:部分業務無法直接關聯join,隻能通過java接口去調用,提供了開發的複雜度。比如雙11訂單表上面商品價格是20元,

然後過了雙11商品表的價格是25,我們查訂單資訊不能直接join。

3)水準分表:将id通過運算,哈希,把資料分散在不同表。比如奇數id放在user1表,偶數id放在user2表。

分庫分表

 4)水準分庫:将id通過運算,哈希,把資料分散在不同庫。比如奇數id放在user1表,偶數id放在user2表。

分庫分表