mycat 分表子查询_Mycat(水平拆分 -- 分表)-01

本文介绍了Mycat水平拆分(分表)的相关内容。水平拆分是按字段规则将数据分散到多个库,可理解为按数据行切分。还详细说明了配置分表的步骤,包括选择拆分表、确定分表字段、修改配置文件、建表、重启Mycat及访问实现分片等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mycat(水平拆分 -- 分表)-01

相对于垂直拆分, 水平拆分不是将表做分类, 而是按照某个字段的某种规则来分散到多个库中. 每个表中 包含一部分数据. 简单来说, 我们可以将数据的水平切分理解为是按照数据行的切分, 就是将表中的某些行切分 到一个数据库, 而别的某些行又切分到其他的数据库中.

配置分表

1. 选择要拆分的表

MySQL 单表存储数据条数是有瓶颈的, 单表达到 1000 万条数据时就达到了瓶颈, 会影响查询效率, 需要进行水平拆分 (分表) 进行优化.

列如: 当 orders 和 orders_detail 都达到 600 万行数据, 需要进行分表优化.

2. 分表字段

以 orders 表为列, 可以根据不同字段进行分表编号分表字段效果1id(主键、或创建时间)查询订单注重时效,历史订单被查询的次数少,如此会形成一个节点访问多,一个节点访问少。

2customer_id(客户 id)根据客户 id 去分,两个节点访问平均,一个客户的所有订单都在同一个节点。

3. 修改配置文件 schema.xml# 为 orders 表设置数据节点 dn1,dn2, 并指定分片规则 mod_rule(自定义的名字)

4. 修改配置文件 rule.xml# 在 rule 配置文件里面新增分片规则 mod_rule, 并指定规则适用字段为 customer_id

#还有选择分片算法 mod-long(对字段取模运算),customer_id 对两个节点取模, 根据结果分片

#配置算法 mod-long 参数 count 为 2, 两个节点

customer_id

mod-long

往下找到算法的具体实现

5. 在数据节点 dn2 上建 orders 表

6. 重启 mycat.

7. 访问 mycat 实现分片insert into orders(id,order_type,customer_id,amount)values(1,1,1,1000.00);

insert into orders(id,order_type,customer_id,amount)values(2,1,2,1000.00);

insert into orders(id,order_type,customer_id,amount)values(3,1,3,1000.00);

insert into orders(id,order_type,customer_id,amount)values(4,1,4,1000.00);

insert into orders(id,order_type,customer_id,amount)values(5,1,5,1000.00);

insert into orders(id,order_type,customer_id,amount)values(6,1,6,1000.00);

查询 mycat:

dn1:

dn2:

来源: http://www.bubuko.com/infodetail-3711208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值