当前位置: 首页 > news >正文

mycat分片规则之范围约定规则(auto-sharding-long)

分片规则学习

前面部署的时候,就有想到分片规则的问题。规则是什么样子?怎么来定义?

规则列表:
分片枚举
固定分片hash算法
范围约定
取模
按日期(天)分片
取模范围约束
截取数字做hash求模范围约束
应用指定
截取数字hash解析
一致性hash
按单月小时拆分
范围求模分片
日期范围hash分片
冷热数据分片
自然月分片

感觉这个是mycat的精髓部分了,有困难。慢慢攻克。

看看我们现在使用了哪个规则?

<table name="t1" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

用的是auto-sharding-long

这是最简单的范围约定规则

看看它的定义

</tableRule>
<tableRule name="auto-sharding-long">
<rule>
<columns>id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>

解释下 name是规则名字,columns段是分片的表字段,algorithm段是使用的函数

看看函数,在rule.xml下面有这个定义

<function name="rang-long"
class="io.mycat.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
</function>

解释下,name是函数名字,mapfile是要读取的配置文件

看看配置文件

[root@mysql1 conf]# cat autopartition-long.txt

range start-end ,data node index

# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2

这是默认的配置,也可以直接修改,我们修改下
[root@mysql1 conf]# cat autopartition-long.txt

range start-end ,data node index

# K=1000,M=10000.
0-1K=0
1K-10K=1
10K-100K=2

现在的意思是:
id 0-1K 分配到datanode dn1
id 1K-10K 分配到datanode dn2
id 10K-100K 分配到datanode dn3

是不是这样呢?测试下:

mysql> explain insert into t1(id) values(1);
+-----------+------------------------------+
| DATA_NODE | SQL |
+-----------+------------------------------+
| dn1 | insert into t1(id) values(1) |
+-----------+------------------------------+
1 row in set (0.01 sec)

mysql> insert into t1(id) values(1001);
Query OK, 1 row affected (0.02 sec)

mysql> explain insert into t1(id) values(1001);
+-----------+---------------------------------+
| DATA_NODE | SQL |
+-----------+---------------------------------+
| dn2 | insert into t1(id) values(1001) |
+-----------+---------------------------------+
1 row in set (0.01 sec)

mysql> insert into t1(id) values(10001);
Query OK, 1 row affected (0.02 sec)

mysql> explain insert into t1(id) values(10001);
+-----------+----------------------------------+
| DATA_NODE | SQL |
+-----------+----------------------------------+
| dn3 | insert into t1(id) values(10001) |
+-----------+----------------------------------+
1 row in set (0.00 sec)

mysql>

实现了按范围分片的需求。

转载于:https://blog.51cto.com/goome/2050187

相关文章:

  • 使Apache(Linux)支持Silverlight
  • Java IO详解
  • 循环打印视图(学习WHILE循环)
  • rsync同步的实现及其简单源码包的编译安装
  • css3新特性
  • 微信小程序 textarea
  • 从jQuery 入口方式写jQuery工具类库
  • SQL优化常用方法13
  • Maven打uber-jar,运行报读取不到dubbo.xsd的解决方案
  • PHP的引用,你知道多少
  • 06、python 系列之 函数
  • ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus
  • 并查集-----hrbust 1073
  • Unity LayerMask 的位运算
  • 搭建千万PV高可用系统—DNS
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 08.Android之View事件问题
  • ComponentOne 2017 V2版本正式发布
  • DOM的那些事
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java到底能干嘛?
  • learning koa2.x
  • MySQL几个简单SQL的优化
  • QQ浏览器x5内核的兼容性问题
  • Redux系列x:源码分析
  • 分享几个不错的工具
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 简单基于spring的redis配置(单机和集群模式)
  • 排序算法学习笔记
  • 前端临床手札——文件上传
  • 最简单的无缝轮播
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • ( 10 )MySQL中的外键
  • (06)Hive——正则表达式
  • (2)nginx 安装、启停
  • (9)STL算法之逆转旋转
  • (分布式缓存)Redis哨兵
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ****Linux下Mysql的安装和配置
  • ./和../以及/和~之间的区别
  • .apk文件,IIS不支持下载解决
  • .form文件_SSM框架文件上传篇
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net中生成excel后调整宽度
  • .Net组件程序设计之线程、并发管理(一)
  • ::什么意思
  • @Autowired自动装配
  • @requestBody写与不写的情况
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ C++ ] STL---string类的模拟实现
  • [ linux ] linux 命令英文全称及解释
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码