mycat 分片规则-自定义范围分片-rang-long

news/2023/6/8 6:49:18

原理概述

实现方式:范围分片,就是我们自己根据某个字段的数值范围来确定这些数据到底存放在哪一个分片上,不过需要我们提前规划好分片字段某个范围属于哪个分片。切分规则根据文件(autopartition-long.txt)配置的范围来进行切片,根据配置的分片字段取值范围,然后把这一范围的所有数据都插入到该分片。
举个例子:比如将id在0-500W的数据分片在第一个节点上面,将id在500W-1000W的数据分片在第二个节点上,依次类推下去
 
优点:适用于想明确知道某个分片字段的某个范围具体在哪一个节点;
缺点:如果短时间内有大量的批量插入操作,那么某个分片节点可能一下子会承受比较大的数据库压力,而别的分片节点此时可能处于闲置状态,无法利用其它节点进行分担压力(热点数据问题);
 

为方便测试,本实例在以下案例中测试
https://blog.csdn.net/qq_41712271/article/details/114984855?spm=1001.2014.3001.5501

1 schema.xml配置

<schema name="logic_shop_db" checkSQLschema="true" sqlMaxLimit="100"><!-- 逻辑表配置 --><!-- 取模分片测试 ,重点看 rule --><table name="news" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
</schema>

 2 rule.xml配置

<tableRule name="auto-sharding-long"><rule><!-- 标识将要分片的表字段 --><columns>id</columns><!-- 指定分片函数与function的对应关系 --> <algorithm>rang-long</algorithm></rule>
</tableRule><!-- 指定该分片算法对应的类 -->
<function name="rang-long"class="io.mycat.route.function.AutoPartitionByLong"><!-- 对应的外部配置文件 --><property name="mapFile">autopartition-long.txt</property><!--默认节点默认节点的所用:枚举分片时,如果碰到不识别的枚举值, 就让它路由到默认节点; 如果没有默认值,碰到不识别的则报错 --><property name="defaultNode">2</property><!-- 默认值为0 ; 0 表示Integer , 1 表示String --><property name="type">0</property>
</function>

3 autopartition-long.txt 配置如下:

# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2

 

含义为 : 0 - 500 万之间的值 , 存储在0号数据节点 ; 500万 - 1000万之间的数据存储在1 号数据节点 ; 1000万 - 1500 万的数据节点存储在2号节点 ;
 

4 重启mycat服务,开始测试

insert into news(id,name) values(111,'zhangsan');
insert into news(id,name) values(222,'lisi');
insert into news(id,name) values(5000001,'wangwu');
insert into news(id,name) values(10000001,'zhaoliu');

 


https://dhexx.cn/news/show-17509.html

相关文章

微信公众帐号开发之一(java)

闲来没事&#xff0c;就记录一下微信公众平台的开发吧~ 其实微信公众平台开发没有想象中的那么困难&#xff0c;因为注册了微信公众平台帐号登录之后在开发者模式里有详细的文档&#xff0c;个人感觉介绍还是比较详细的。 微信公众平台订阅号和服务号的区别网上已经有N多的介绍…

mycat 分片规则-枚举分片-hash-int

为方便测试&#xff0c;本实例在以下案例中测试https://blog.csdn.net/qq_41712271/article/details/114984855?spm1001.2014.3001.5501 通过在配置文件中配置可能的枚举值, 指定数据分布到不同数据节点上, 本规则适用于按照省份或状态拆分数据等业务 , 配置如下: 1 schema…

mycat 分片规则-范围求模算法-auto-sharding-rang-mod

为方便测试&#xff0c;本实例在以下案例中测试https://blog.csdn.net/qq_41712271/article/details/114984855?spm1001.2014.3001.5501 该算法为先进行范围分片, 计算出分片组 , 再进行组内求模。 优点&#xff1a; 综合了范围分片和求模分片的优点。 分片组内使用求模可以…

input 类型总结

在表单中input是拥有类型最多的元素&#xff0c;在这总结一下。 typetext 输入类型是text&#xff0c;这是我们见的最多也是使用最多的&#xff0c;比如登陆输入用户名&#xff0c;注册输入电话号码&#xff0c;电子邮件&#xff0c;家庭住址等等。当然这也是Input的默认类型。…

springboot整合websocket最基础入门使用(原生API方式)

项目最终的文件结构 1 添加maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency><groupId>org.projectlombok</groupI…

WinForm实现类似QQ停靠,显示隐藏过程添加特效效果

WinForm实现类似QQ停靠&#xff0c;显示隐藏过程添加特效效果 原文:WinForm实现类似QQ停靠&#xff0c;显示隐藏过程添加特效效果这可能是个老题长谈的问题了&#xff0c;只是在项目中会用到这个效果&#xff0c;所以今天做个记录。大家见了别喷我。在项目中的需求是这样的。 打…

Nginx简介

背景介绍Nginx&#xff08;"engine X"&#xff09;一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】&#xff0c;同时也是一个【POP3/SMTP?IMAP代理服务器】&#xff0c;是由伊戈尔赛索耶夫&#xff08;俄罗斯人&#xff09;使用C语言编写的&#xff0c;Ngin…

springboot整合websocket基础入门,常见注解使用 Demo (基于stomp协议发布订阅方式实现)

基于发布&#xff0c;订阅&#xff0c;主题 模式&#xff0c;实现原理图 1 项目最终的结构图&#xff0c;源码示例下载https://download.csdn.net/download/qq_41712271/16107255 2 maven依赖&#xff0c;springboot 版本 1.5.8.RELEASE &#xff0c;太高的版本会涉及到跨域问题…

《sed的流艺术之一》-linux命令五分钟系列之二十一

本原创文章属于《Linux大棚》博客&#xff0c;博客地址为http://roclinux.cn。文章作者为rocrocket。 为了防止某些网站的恶性转载&#xff0c;特在每篇文章前加入此信息&#xff0c;还望读者体谅。 [正文开始] 1 你想过sed为什么叫sed么&#xff1f; sed是stream editor的缩写…

20140505 科技脉搏 - “社交”这棵老树,依然在开着新花

★Ⅰ焦点关注 ◎云服务 寂寞。。。 ◎新媒体 三个角度看&#xff1a;丧钟为何为纸媒和银行而鸣 ◎大数据 寂寞。。。 ◎可穿戴设备 未来&#xff0c;设备或都懂你感受 ◎电商 寂寞。。。 ◎O2O 寂寞。。。 ★Ⅱ巨头动态 腾讯COO任宇昕&#xff1a;如何享受移动互联网红…