在互联网系统中,随着业务的增长,数据量也随着同步增长。
这会带来新的大表问题。
例如,一张订单表,很有可能到了几亿甚至几十亿的级别,由此带来的写入和读取性能的下降,会成为业务不容忽视的因素。
那么,如何对这种大表进行拆分呢?
首先能想到的策略就是分库分表。
分库分表又分为垂直拆分和水平拆分两种。
垂直拆分,还是水平拆分?
垂直拆分
如果业务之间的数据可以相互隔离,互不影响,那么垂直拆分是一个很简单的方案。
例如,对于一个订阅通知的服务而言,可能有不同的业务在使用,每个业务有不同的页面,各个业务之间的数据毫无关系,那么,对于每个业务而言,数据量就有限了,很多时候垂直拆分就可以解决问题。
垂直拆分的优点:
1、数据天然隔离,没有全表查询问题
2、改造方案简单
垂直拆分的缺点:
1、数据不均匀,可能不能完美解决大表问题
水平拆分
另一种分库分表的方式是水平拆分。
水平拆分的原理,就是从业务字段中选择一个拆分的字段,在写的时候根据这个字段生成分表的编号,读的时候也根据这个查询条件决定去哪个表查询。
水平拆分也是业务常用的处理大表的方式,但水平拆分并不是毫无缺点的,需要使用水平分库分表,业务方必须要考虑以下问题:

面对亿级数据的大表,本文探讨了垂直拆分和水平拆分两种策略。垂直拆分通过业务隔离简化方案,但可能无法完全解决问题;水平拆分涉及分表字段选择、分片数设定及历史数据迁移,需权衡查询复杂性和数据分布。此外,全表查询问题可通过索引表或多分表字段解决。对于流量较大场景,分库也是有效手段。最后,冷热分离策略将高频和低频数据分开存储,提供灵活的解决方案。
最低0.47元/天 解锁文章
579

被折叠的 条评论
为什么被折叠?



