举例介绍水平分表和垂直分表

水平分表

水平分表就是把一个表的数据分开存储。每个表结构都一样,只不过每个表放的数据是不同的,所有表的数据加起来就是全部数据。

举例

拆分前

假设用户表 t_user 含有字段:idnamesexagecreate_time

拆分后

假设现在有需求要统计用户性别,那么可以建立2张表: t_user_malet_user_female。新增用户,当用户性别为男时,存入 t_user_male表中;当用户为女时,将数据存入 t_user_female 表中。这样用户表的数据会一分为2,单表数据量会缩小,执行数据库操作时效率会增高。

如果后期表数据过大时,还可以继续按照年龄段水平分表。实际开发中,分表策略还要根据实际情形来制定。

垂直分表

垂直分表就是把一个表拆分为多个表。每个表结构都不一样,表与表之间通过外键性质的字段进行关联。一般情况是根据表字段查询次数来拆分表,查询次数少的字段根据需要提取到一个表或多个表中,查询次数多的字段根据需要提取到一个表或多个表中。

举例

拆分前

假设文章表 t_article含有字段:id, content, url, create_time

拆分后

t_article 拆分为 t_articlet_article_content, t_article 中字段:id, url, create_timet_article_content 中字段:id, content, article_id, create_time

因为 content 字段包含的数据较多,影响查询效率且查询热度低,所以将 content 字段单独提取出来,并在表中加入 article_idt_article 进行关联。

转载于:https://juejin.im/post/5d08a1c26fb9a07ed136d738

猜你喜欢

转载自blog.csdn.net/weixin_34067980/article/details/93183916
今日推荐