MyCat分片规则之取模范围分片
一、简介
本文介绍另外一种分片规则 --- 取模范围分片,先进行取模运算再根据求余结果范围进行分片。
- 实现方式:该种分片规则首先根据配置的分片字段,与配置的取模基数进行求余操作,根据求余的结果,然后判断在哪一个分片范围内,由此对应到具体某个数据分片上。
- 优点:可以自由地决定取模后数据的节点分布
- 缺点:dataNode 划分节点是事先建好的,扩展比较麻烦。
二、取模范围分片
下面通过示例说明在MyCat中如何进行取模范围分片,具体实现步骤如下:
【a】创建数据库和表:
use modrange01;
create table user(id bigint not null primary key,name varchar(20));use modrange02;
create table user(id bigint not null primary key,name varchar(20));
【b】配置server.xml: 逻辑库信息、用户信息
<user name="root"><property name="password">0905</property><property name="schemas">TESTMODRANGE</property><!-- 表级 DML 权限设置 --><!-- <privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges> --></user><user name="user"><property name="password">user</property><property name="schemas">TESTMODRANGE</property><property name="readOnly">true</property></user>
【c】配置rule.xml,定义取模范围分片规则
<tableRule name="sharding-by-pattern-modrange"><rule><columns>id</columns><algorithm>sharding-by-pattern-modrange</algorithm></rule>
</tableRule><function name="sharding-by-pattern-modrange" class="io.mycat.route.function.PartitionByPattern"><property name="mapFile">partition-pattern-modrange.txt</property><property name="patternValue">256</property><property name="defaultNode">0</property>
</function>
- 配置相关说明
- mapFile:切分规则配置文件;
- patternValue:求模基数;
- defaultNode:默认节点,小于0表示不设置默认节点,大于等于0表示设置默认节点,如果超出配置的范围,则使用默认节点;
【d】配置partition-pattern-modrange.txt 取模分片规则
- vim partition-pattern-modrange.txt
1-32=1
33-64=2
65-128=3
129-256=4
0-0=0
注意:其1-32 表示的为 id % 256后分布的范围,如果id不是数据则分配到 defaultNode 中。
【e】配置schema.xml,指定分片表,分片规则,分片节点等
<schema name="TESTMODRANGE" checkSQLschema="true" sqlMaxLimit="1000"><table name="user" dataNode="dn$1-5" primaryKey="id" rule="sharding-by-pattern-modrange" /></schema><dataNode name="dn1" dataHost="dataHost01" database="modrange01" /><dataNode name="dn2" dataHost="dataHost01" database="modrange02" /><dataNode name="dn3" dataHost="dataHost01" database="modrange01" /><dataNode name="dn4" dataHost="dataHost01" database="modrange02" /><dataNode name="dn5" dataHost="dataHost01" database="modrange01" /><dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="192.168.179.130:3306" user="root" password="0905" /></dataHost>
【f】测试插入数据
insert into user(id,name) values(1,'zhangsan');
insert into user(id,name) values(50,'lisi');
insert into user(id,name) values(712,'wangwu');
insert into user(id,name) values(256,'zhaoliu');
- 分析:
- 1 % 256 = 1 : 满足1-32=1,datanode index = 1,即在第二个节点dn2, 所以该条数据插入到modrange02库。
- 50 % 256 = 50:满足33-64=2,datanode index = 2,即在第三个节点dn3 所以该条数据插入到modrange01库。
- 712 %256 = 200:满足129-256=4,datanode index = 4,即在第五个节点dn5 所以该条数据插入到modrange01库。
- 256 %256 = 0:满足0-0=0,datanode index = 0,即在第一个节点dn1 所以该条数据插入到modrange01库。
三、总结
以上就是关于mycat中取模分片的配置实现步骤,总结几点如下:
- a.创建数据库和表;
- b.配置server逻辑库、用户信息;
- c.配置schema.xml分片表、分片规则、节点等;
- d.配置rule.xml声明分片函数、以及分片字段等;
- e.配置取模范围对应的分片节点信息;
- f.插入数据验证;
MyCat分片规则之取模范围分片相关推荐
- MyCat分片规则(全局表,ER分片表,多对多关联,主键分片VS非主键分片),MyCat常用的分片规则(15中分片规则),自定义MyCat分片规则,其它术语
1 MyCat分片规则 数据切分中重要的几条原则,其中有几条数据冗余,表分组(Table Group). 1.1全局表 如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或数据量 ...
- Mycat分片规则详解
1.分片枚举 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则,配置如下: <tab ...
- mysql 分区 mycat 分片_Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)...
一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: select * from travelrecord where id in(5000001, 10000001) ...
- Mycat 分片规则---不以规矩,不能成方圆
分片规则概述 在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分.数据的聚合.选择合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理 ...
- mycat分片规则详解+实例演示
mycat分片规则 1.环境准备 : 2.分片规则 2.1 取模分片 2.2 范围分片 2.3 枚举分片 2.4 范围求模算法 2.5 固定分片hash算法 2.6 取模范围算法 2.7 字符串has ...
- MySql使用MyCat分库分表(四)分片规则
视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定 ...
- mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置
一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...
- mycat 分片规则
传统的分片策略都是基于单表,或者分片基于主键进行分配,或者某些场景下需要多个表依赖于一个分片,或者分片的字段并不是主键. a. 对于传统的数据库分片方式都是基于单个表格,对于表关联这种操作,则很难处 ...
- MySQL运维篇之Mycat分片规则
3.5.3.Mycat分片规则 3.5.3.1.范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片. 示例: 可以通过修改autopartition-long.tx ...
- 【MySQL | 运维篇】06、MySQL 分库分表之 MyCat 分片规则
目录 一.范围分片 1. 介绍 2. 配置 schema.xml逻辑表配置: schema.xml数据节点配置: rule.xml分片规则配置: 二.取模分片 1. 介绍 2. 配置 schema.x ...
最新文章
- Udacity机器人软件工程师课程笔记(二十八) - 卷积神经网络实例 - Fashion-MNIST数据集
- SUSE glibc升级为2.18过程记录
- 【线上圆桌整理 - 微软】后疫情时代现代化办公新趋势
- Android Studio提示No virtual method asBitmap()Lcom/bumptech/glide/RequestBuilder
- strictmath_Java StrictMath log1p()方法与示例
- 测试网络的带宽指令_单机千万级MQTT服务器测试报告
- 高速pcb设计指南 1~8
- Wise Package Studio介绍
- SpringMVC学习一
- BZOJ 2440 【中山市选2011】 完全平方数
- go语言项目实战1:-正则表达式,文件读取的综合使用
- centos6.6装mysql5.7_centos 6.5装mysql5.7
- 上海计算机等级考试档案记录,【档案区】上海市高等学校计算机等级考试(一级)考试大纲...
- Android 使用VelocityTracker来获取滑动速度
- 少爷秋游云台山:沿途风景为其绽放
- 介绍ping中的TTL是什么意思
- LaTex的箭头符号及命令
- 英语3500词(十一)entertainment主题(2022.1.23)
- 如何将代码写的更加优雅?
- 用Acrobat打印小册子
热门文章
- Kaggle Future Sales“”竞赛 XGB_model_final
- sizeof计算结构体时的内存对齐问题
- reactbootstrap php,什么是React-Bootstrap
- 【知识图谱系列】基于Randomly Perturb的图谱预训练模型GraphCL
- 代码整洁之道读书笔记----第三章---函数--第一节-专注且短小
- 【山东2019省赛J题 ZOJ 4122】Triangle City【最短路去边+欧拉路】
- 多视角子空间学习系列之 MCCA (Multi-view CCA) 多视角CCA Horst算法
- adc分辨率和精度的区别_STM32学习笔记—ADC采集数据常见问题
- 利用Outlook应用程序接口执行Shellcode
- (详细带你分析错误):No property 属性名 found for type 类名,总结了其他解决办法