分庫分表怎麼做?

分庫分表怎麼做?紙飛機技術拆解局2018-04-27 16:36:51

還是需要具體問題具體分析吧。總的來說,這裡提供關於分表的兩個思路,以供參考,分庫其實也有類似的思路。

(1)垂直分表:這是最基本的玩法了。說白了,就是“大表拆小表”,主要用於某個表中的欄位比較多的情況,將不常用的欄位,或長度比較大的欄位,拆分到對應的“擴充套件表”,以提高主表的讀寫效率。其實在規模不是很大的情況下,我們用索引也是基於類似的考慮。

(2)水平分表:我覺得這可能就是你想問的,就是在記錄數量很大了以後,怎麼分表。這裡,最重要的是要考慮兩點:

當前資料行的特徵,儘可能的將業務上有關聯的資料行保持在一張表中,也就是說,要建立一個合適業務規模的分表策略。

如何確保主鍵唯一性,顯然的,分表後,不同的表的主鍵如果還是按照傳統最常用的自增長模式,就一定會出現,業務在進行跨表的查詢時,會因為主鍵的重複,而導致錯誤,因此,這裡重點就是要規劃好新的主鍵產生方案,通常是需要將主鍵或者時間等欄位進行Hash和取模後再行進行拆分

至於拆分後的查詢,對於垂直分表,沒有很特別的方面,水平分表,則主要是要考慮對於group by或order by之類的查詢,這方面有很多的技巧,就不在這裡一一贅述了。