# 分库分表 ## 分库 ### 按业务拆分 @todo ## 分表 ### 垂直分表 ```text 也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长(比如text类型字段)的拆分到“扩展表“。 一般是针对那种几百列的大表,也避免查询时,数据量太大造成的“跨页”问题。 ``` ### 水平分表 ```text 针对数据量巨大的单张表(比如订单表),按照某种规则(RANGE,HASH取模等),切分到多张表里面去。 但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈。不建议采用。 ``` #### 常见策略 方式|优点|缺点 ---|---|--- hash|分配得最均匀|实现难度较高 mysql主键步长|实现简单|能满足需求,但是后续再升级比较麻烦 时间|实现简单|分配不均匀(可能某个月的数据量会比较大)