一、简介

本文介绍另外一种分片规则 --- 取模范围分片,先进行取模运算再根据求余结果范围进行分片。

  • 实现方式:该种分片规则首先根据配置的分片字段,与配置的取模基数进行求余操作,根据求余的结果,然后判断在哪一个分片范围内,由此对应到具体某个数据分片上。
  • 优点:可以自由地决定取模后数据的节点分布
  • 缺点: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分片规则之取模范围分片相关推荐

  1. MyCat分片规则(全局表,ER分片表,多对多关联,主键分片VS非主键分片),MyCat常用的分片规则(15中分片规则),自定义MyCat分片规则,其它术语

    1 MyCat分片规则 数据切分中重要的几条原则,其中有几条数据冗余,表分组(Table Group). 1.1全局表 如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或数据量 ...

  2. Mycat分片规则详解

    1.分片枚举 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则,配置如下: <tab ...

  3. mysql 分区 mycat 分片_Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)...

    一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: select * from travelrecord where id in(5000001, 10000001) ...

  4. Mycat 分片规则---不以规矩,不能成方圆

    分片规则概述 在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分.数据的聚合.选择合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理 ...

  5. mycat分片规则详解+实例演示

    mycat分片规则 1.环境准备 : 2.分片规则 2.1 取模分片 2.2 范围分片 2.3 枚举分片 2.4 范围求模算法 2.5 固定分片hash算法 2.6 取模范围算法 2.7 字符串has ...

  6. MySql使用MyCat分库分表(四)分片规则

    视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定 ...

  7. mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

    一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...

  8. mycat 分片规则

    传统的分片策略都是基于单表,或者分片基于主键进行分配,或者某些场景下需要多个表依赖于一个分片,或者分片的字段并不是主键. a.  对于传统的数据库分片方式都是基于单个表格,对于表关联这种操作,则很难处 ...

  9. MySQL运维篇之Mycat分片规则

    3.5.3.Mycat分片规则 3.5.3.1.范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片. 示例: 可以通过修改autopartition-long.tx ...

  10. 【MySQL | 运维篇】06、MySQL 分库分表之 MyCat 分片规则

    目录 一.范围分片 1. 介绍 2. 配置 schema.xml逻辑表配置: schema.xml数据节点配置: rule.xml分片规则配置: 二.取模分片 1. 介绍 2. 配置 schema.x ...

最新文章

  1. Udacity机器人软件工程师课程笔记(二十八) - 卷积神经网络实例 - Fashion-MNIST数据集
  2. SUSE glibc升级为2.18过程记录
  3. 【线上圆桌整理 - 微软】后疫情时代现代化办公新趋势
  4. Android Studio提示No virtual method asBitmap()Lcom/bumptech/glide/RequestBuilder
  5. strictmath_Java StrictMath log1p()方法与示例
  6. 测试网络的带宽指令_单机千万级MQTT服务器测试报告
  7. 高速pcb设计指南 1~8
  8. Wise Package Studio介绍
  9. SpringMVC学习一
  10. BZOJ 2440 【中山市选2011】 完全平方数
  11. go语言项目实战1:-正则表达式,文件读取的综合使用
  12. centos6.6装mysql5.7_centos 6.5装mysql5.7
  13. 上海计算机等级考试档案记录,【档案区】上海市高等学校计算机等级考试(一级)考试大纲...
  14. Android 使用VelocityTracker来获取滑动速度
  15. 少爷秋游云台山:沿途风景为其绽放
  16. 介绍ping中的TTL是什么意思
  17. LaTex的箭头符号及命令
  18. 英语3500词(十一)entertainment主题(2022.1.23)
  19. 如何将代码写的更加优雅?
  20. 用Acrobat打印小册子

热门文章

  1. Kaggle Future Sales“”竞赛 XGB_model_final
  2. sizeof计算结构体时的内存对齐问题
  3. reactbootstrap php,什么是React-Bootstrap
  4. 【知识图谱系列】基于Randomly Perturb的图谱预训练模型GraphCL
  5. 代码整洁之道读书笔记----第三章---函数--第一节-专注且短小
  6. 【山东2019省赛J题 ZOJ 4122】Triangle City【最短路去边+欧拉路】
  7. 多视角子空间学习系列之 MCCA (Multi-view CCA) 多视角CCA Horst算法
  8. adc分辨率和精度的区别_STM32学习笔记—ADC采集数据常见问题
  9. 利用Outlook应用程序接口执行Shellcode
  10. (详细带你分析错误):No property 属性名 found for type 类名,总结了其他解决办法