水平分表与垂直分表

水平分表:

      根据主要查询条件需拆分,列入一般我们查询的时候都是去用id去查

       1、 我们先来解决多张表使用唯一的自增id,我 目前看文章看懂的是  可以单独建立一张去记录MaxId  , 也可以用函数去做,但是我没太明白所以就不讲了,

      2、 根据id来判断扔哪张表,  加入有5张,我们来取模   用户id%5  =存在哪张表内,   计算这种的公式也有很多,也可以用Hash的,

     3、 那我们查数据的时候  需要确定那张表 就需要跑公式去找了,但一定要有主查询条件哈~

     4、 缺点就是维护量大- -复杂,推荐能不分就不分 ,例如:升级硬件、升级网络、读写分离、索引优化等等。当数据量达到单表的瓶颈时候,再考虑分库分表。

原因:

     1.根据MySQL索引实现原理及相关优化策略的内容我们知道Innodb主索引叶子节点存储着当前行的所有信息,所以减少字段可使内存加
载更多行数据,有利于查询。

     2.受限于操作系统中的文件大小限制。

 

垂直分表:

    1、根据业务判断你的字段 有哪些热字段 冷字段, 热一组,冷一组 分开,这样可以减少字段数量,然后再把大字段入text类型的那种可以分出去,

   2、不过查询的时候也有弊端, 冷数据并不是不要,需要的时候也要join,

 

原因:

    1.随着数据量的增大,table行数巨大,查询的效率越来越低。表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也

降低了索引的层数,提高查询速度。

    2.同样受限于操作系统中的文件大小限制,数据量不能无限增加,当到达一定容量时,需要水平切分以降低单表(文件)的大小。

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