Mycat分库路由规则
发布时间:2020-06-15 16:54:10
来源:51CTO
阅读:11651
作者:lzf05303774
一、Mycat分库路由分为连续路由和离散路由。
1、连续路由:
(1)、常用的路由方式:auto-sharding-long、sharding-by-date、sharding-by-month
(2)、优点:扩容无需迁移数据;范围条件查询消耗资源少。
(3)、缺点:存在数据热点的可能性;并发访问能力受限于单一或少量的DataNode
2、离线路由:
(1)、常用的路由方式:sharding-by-intfile、sharding-by-murmur、mod-long(取模)、crc32slot(取模)
(2)、优点:并发访问能力增强。
(3)、缺点:数据扩容比较困难,涉及到数据迁移问题;数据库链接消耗资源多。
二、auto-sharding-long:
1、路由规则:
userid
rang-long-userid
class="io.mycat.route.function.AutoPartitionByLong">
autopartition-long-userid.txt
[root@host01 conf]# more autopartition-long-userid.txt
# range start-end ,data node index
# K=1000,M=10000.
0-1000=0
1001-2000=1
2001-3000=2
3001-4000=3
4001-5000=4
5001-6000=5
2、例子:
CREATE TABLE tb_user_detail_t (
userid bigint not null primary key,
name varchar(64) DEFAULT NULL,
createtime datetime DEFAULT CURRENT_TIMESTAMP,
moditytime datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
写入数据
insert into tb_user_detail_t(userid,name) values(999,'name999');
insert into tb_user_detail_t(userid,name) values(1999,'name999');
insert into tb_user_detail_t(userid,name) values(2999,'name999');
insert into tb_user_detail_t(userid,name) values(3999,'name999');
insert into tb_user_detail_t(userid,name) values(4999,'name999');
insert into tb_user_detail_t(userid,name) values(5999,'name999');
三、sharding-by-date:
1、路由规则:
createtime
partbydate
yyyy-MM-dd HH:mm:ss
2016-01-01 00:00:00
2
分片日期从2016-01-01开始,每2天一个分片。
2、例子:
CREATE TABLE `tb_user_partbydate` (
`id` varchar(32) NOT NULL,
`name` varchar(64) DEFAULT NULL,
`createtime` varchar(10)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into tb_user_partbydate (id,name,createtime) values('a0001','name1','2016-01-01 00:01:00');
insert into tb_user_partbydate (id,name,createtime) values('a0002','name1','2016-01-02 00:01:00');