难得一见如此接地气的分库分表全程实践( 二 )

分表

首先讨论下什么样的情况下适合分表?

根据我的经验来看,当某张表的数据量已经达到千万甚至上亿,同时日增数据量在 2% 以上。

当然这些数字并不是绝对的,最重要的还是对这张表的写入和查询都已经影响到正常业务执行,比如查询速度明显下降,数据库整体 IO 居高不下等。

而谈到分表时我们着重讨论的还是水平分表:

难得一见如此接地气的分库分表全程实践

也就是将一张大表数据通过某种路由算法将数据尽可能的均匀分配到 N 张小表中。

1、Range

而分表策略也有好几种,分别适用不同的场景。

首先第一种是按照范围划分,比如我们可以将某张表的创建时间按照日期划分存为月表;也可以将某张表的主键按照范围划分,比如【1~10000】在一张表,【10001~20000】在一张表,以此类推。

推荐阅读