MyCat分片策略

MyCat分片策略

分片的目标是将大量数据和访问请求均匀分布在多个节点上,通过这种方式提升数据服务的存储和负载能力

Mycat 分片策略总体上分为连续分片和离散分片,还有一种是连续分片和离散分片的结合,例如先范围后取模
MyCat分片策略_第1张图片
比如范围分片(id 或者时间)就是典型的连续分片,单个分区的数量和边界是确定的。离散分片的分区总数量和边界是确定的,例如对 key 进行哈希运算,或者再取模。
关键词:范围查询、热点数据、

扩容连续分片优点:
1)范围条件查询消耗资源少(不需要汇总数据)
2)扩容无需迁移数据(分片固定)

连续分片缺点:
1)存在数据热点的可能性
2)并发访问能力受限于单一或少量 DataNode(访问集中)

离散分片优点:
1)并发访问能力增强(负载到不同的节点)
2)范围条件查询性能提升(并行计算)

离散分片缺点:
1)数据扩容比较困难,涉及到数据迁移问题
2)数据库连接消耗比较多

4.1.3切分规则的选择
步骤:
1、找到需要切分的大表,和关联的表
2、确定分片字段(尽量使用主键),一般用最频繁使用的查询条件
3、考虑单个分片的存储容量和请求、数据增长(业务特性)、扩容和数据迁移问题
例如:按照什么递增?序号还是日期?主键是否有业务意义?
一般来说,分片数要比当前规划的节点数要大。总结:根据业务场景,合理地选择分片规则

举例分析是否需要使用MyCat:
3.7 亿的数据怎么分表?我是不是需要分成 3 台服务器?

**思考:**一年内到达多少?两年内到达多少?(数据的增长速度)?
一台设备每秒钟往 3 张表各写入一条数据,一共 4 台设备。每张表一天
86400*4=345600 条。每张表一个月 10368000 条

分析:增长速度均匀,可以用日期切分,每个月分一张表。

**思考:**什么业务?所有的数据都会访问,还是访问新数据为主?
访问新数据为主,但是所有的数据都可能会访问到。

**思考:**表结构和表数据是什么样的?一个月消耗多少空间?
字段不多,三年数据量有 3.7 亿,30G

分析:30G 没必要分库,浪费机器。

**思考:**访问量怎么样?并发压力大么?
并发有一点,但是并不大

分析:如果并发量不大,不用分库,只需要在单库分表。不用引入 Mycat 中间件

你可能感兴趣的:(数据库,数据库,mycat)