水平分表與垂直分表

水平分表:

      根據主要查詢條件需拆分,列入一般我們查詢的時候都是去用id去查

       1、 我們先來解決多張表使用唯一的自增id,我 目前看文章看懂的是  可以單獨建立一張去記錄MaxId  , 也可以用函數去做,但是我沒太明白所以就不講了,

      2、 根據id來判斷扔哪張表,  加入有5張,我們來取模   用戶id%5  =存在哪張表內,   計算這種的公式也有很多,也可以用Hash的,

     3、 那我們查數據的時候  需要確定那張表 就需要跑公式去找了,但一定要有主查詢條件哈~

     4、 缺點就是維護量大- -複雜,推薦能不分就不分 ,例如:升級硬件、升級網絡、讀寫分離、索引優化等等。當數據量達到單表的瓶頸時候,再考慮分庫分表。

原因:

     1.根據MySQL索引實現原理及相關優化策略的內容我們知道Innodb主索引葉子節點存儲着當前行的所有信息,所以減少字段可使內存加
載更多行數據,有利於查詢。

     2.受限於操作系統中的文件大小限制。

 

垂直分表:

    1、根據業務判斷你的字段 有哪些熱字段 冷字段, 熱一組,冷一組 分開,這樣可以減少字段數量,然後再把大字段入text類型的那種可以分出去,

   2、不過查詢的時候也有弊端, 冷數據並不是不要,需要的時候也要join,

 

原因:

    1.隨着數據量的增大,table行數巨大,查詢的效率越來越低。表很大,分割後可以降低在查詢時需要讀的數據和索引的頁數,同時也

降低了索引的層數,提高查詢速度。

    2.同樣受限於操作系統中的文件大小限制,數據量不能無限增加,當到達一定容量時,需要水平切分以降低單表(文件)的大小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章