iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mycat分片规则是怎么样的
  • 305
分享到

Mycat分片规则是怎么样的

2024-04-02 19:04:59 305人浏览 泡泡鱼
摘要

Mycat分片规则是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.sharding-by-intfile hash分片表

Mycat分片规则是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.sharding-by-intfile

hash分片

  1. 表对应的分片规则

  2. Mycat分片规则是怎么样的

查看rule.xml查看对应的关系

  1. <tableRule name="sharding-by-intfile">

  2.                 <rule>

  3.                         <columns>sharding_id</columns>   根据该字段分片

  4.                         <alGorithm>hash-int</algorithm>    分片的方法

  5.                 </rule>

  6.         </tableRule>


查看rule.xml对应的方法

  1. <function name="hash-int"

  2.                 class="io.mycat.route.function.PartitionByFileMap">

  3.                 <property name="mapFile">partition-hash-int.txt</property>   ---对应的文件

  4.                 <property name="defaultnode">1</property>

  5.         </function>


查看文件

  1. [root@localhost conf]# more partition-hash-int.txt

  2. 10000=0   ####sharding_id为10000发到1节点

  3. 10010=1   ####sharding_id为10010发到2节点

  4. DEFAULT_NODE=1  ###其它插到2节点




实验
Mysql> create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into employee(id,name,sharding_id) values(2,'leader us',10000);
Query OK, 1 row affected (0.01 sec)


mysql> insert into employee(id,name,sharding_id) values(4,'leader us',10000);
Query OK, 1 row affected (0.00 sec)

 
mysql> insert into employee(id,name,sharding_id) values(3,'leader us',100003);               -----其它插到2节点



mysql> insert into employee(id,name,sharding_id) values(4,'leader us',10010);
Query OK, 1 row affected (0.01 sec)


mysql> insert into employee(id,name,sharding_id) values(5,'leader us',10010);
Query OK, 1 row affected (0.03 sec)


2.auto-sharding-long

范围分片

  1. 分片表如下:

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

  2. 查看rule.xml对应的关系

    1. <tableRule name="auto-sharding-long">

    2.                 <rule>

    3.                         <columns>id</columns>

    4.                         <algorithm>rang-long</algorithm>

    5.                 </rule>

    6.         </tableRule>

  3. 对应的方法

    1. <function name="rang-long"

    2.                 class="io.mycat.route.function.AutoPartitionByLong">

    3.                 <property name="mapFile">autopartition-long.txt</property>

    4.         </function>

  4. 对应的文件:

    1. # range start-end ,data node index

    2. # K=1000,M=10000.

    3. 0-500M=0           #####范围0-500M插到第一个节点

    4. 500M-1000M=1       #####范围500m-1000M插到第2个节点

    5. 1000M-1500M=2      。。。类推


3.mod-log

取模分片
  1. <table name="tt2" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" />



  2.  fun:



    1. <function name="mod-long" class="io.mycat.route.function.PartitionByMod">

    2.                 <!-- how many data nodes -->

    3.                 <property name="count">3</property>

    4.         </function>

    5. <tableRule name="mod-long">

    6.                 <rule>

    7.                         <columns>id</columns>

    8.                         <algorithm>mod-long</algorithm>

    9.                 </rule>

    10.         </tableRule>


4. sharding-by-month

按月分片

  1. tab:

  2.  <table name="month_tab" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="sharding-by-month" />



rule:

  1. <tableRule name="sharding-by-month">

  2.                 <rule>

  3.                         <columns>create_time</columns>

  4.                         <algorithm>partbymonth</algorithm>

  5.                 </rule>

  6.         </tableRule>



  7. <function name="partbymonth"

  8.                 class="io.mycat.route.function.PartitionByMonth">

  9.                 <property name="dateFORMat">yyyy-MM-dd</property>

  10.                 <property name="sBeginDate">2015-01-01</property>   ##开始时间

  11.         </function>


测试
mysql> insert into month_tab(id,name,sharding_id,create_time) values (1,'1',1,'2015-01-01');
Query OK, 1 row affected (0.43 sec)

mysql> insert into month_tab(id,name,sharding_id,create_time) values (2,'2',2,'2015-02-02');
Query OK, 1 row affected (0.01 sec)

mysql> insert into month_tab(id,name,sharding_id,create_time) values (3,'3',3,'2015-03-03');
Query OK, 1 row affected (0.49 sec)

mysql> insert into month_tab(id,name,sharding_id,create_time) values (4,'4',4,'2015-04-04');   ###按月分片,只有三个节点,只能插到1,2,3月份的,4月份就开始报错了
ERROR 1064 (HY000): Can't find a valid data node for specified node index :MONTH_TAB -> CREATE_TIME -> 2015-04-04 -> Index : 3

5 sharding-by-day

按日分片(1.6默认文件都没写,自己配置的)

  1. tab:

  2. <table name="day_tab" primaryKey="ID" dataNode="dn1,dn2,dn3" rule="sharding-by-day"/>


  3. rule:

    1. <tableRule name="sharding-by-day">

    2.                 <rule>

    3.                         <columns>create_time</columns>

    4.                         <algorithm>partbyday</algorithm>

    5.                 </rule>

    6.         </tableRule>



    7. <function name="partbyday"

    8.                 class="io.mycat.route.function.PartitionByDate">

    9.                 <property name="dateFormat">yyyy-MM-dd</property>

    10.                 <property name="sBeginDate">2015-01-01</property>    ###起始日期

    11.                 <property name="sPartionDay">3</property>            ###多少天后开始分片

    12.         </function>

  4. 测试:

  5. 插了前9天,分到三个分片

  6. mysql> select * from day_tab;
    +----+------+-------------+---------------------+
    | id | name | sharding_id | create_time         |
    +----+------+-------------+---------------------+
    |  7 | 1    |           1 | 2015-01-08 00:00:00 |
    |  8 | 1    |           1 | 2015-01-09 00:00:00 |
    | 13 | 1    |           1 | 2015-01-07 00:00:00 |
    |  7 | 1    |           1 | 2015-01-01 00:00:00 |
    |  8 | 1    |           1 | 2015-01-02 00:00:00 |
    |  9 | 1    |           1 | 2015-01-03 00:00:00 |
    | 10 | 1    |           1 | 2015-01-04 00:00:00 |
    | 11 | 1    |           1 | 2015-01-05 00:00:00 |
    | 12 | 1    |           1 | 2015-01-06 00:00:00 |
    +----+------+-------------+---------------------+
    9 rows in set (0.01 sec)

  7. mysql> insert into day_tab(id,name,sharding_id,create_time) values (17,'1',1,'2015-01-10'),(18,'1',1,'2015-01-11');   ###插第10天的,开始报错
    ERROR 1064 (HY000): Index: 3, Size: 3

关于Mycat分片规则是怎么样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: Mycat分片规则是怎么样的

本文链接: https://www.lsjlt.com/news/66284.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mycat分片规则是怎么样的
    Mycat分片规则是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.sharding-by-intfile hash分片表...
    99+
    2024-04-02
  • CSS中@规则语法是怎么样的
    小编给大家分享一下CSS中@规则语法是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! @规则语法@import&nbs...
    99+
    2024-04-02
  • CSS样式规则是什么
    这篇文章给大家分享的是有关CSS样式规则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 CSS样式规则: CSS3介绍和字体样式 在上面的样式规则中: 1 选择器...
    99+
    2024-04-02
  • 如何理解Mycat分片的限制和问题以及分片的原则
    如何理解Mycat分片的限制和问题以及分片的原则,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 分片的限制和问...
    99+
    2024-04-02
  • CSS中的规则声明是怎样的
    本篇文章给大家分享的是有关CSS中的规则声明是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  CSS 规则由 选择器 和 声...
    99+
    2024-04-02
  • Python切片的语法规则是什么
    Python切片的语法规则如下:sequence[start:stop:step]- sequence:要进行切片操作的序列,可以是...
    99+
    2023-10-21
    Python
  • python列表切片的规则是什么
    Python列表切片的规则如下: 切片使用方括号([])来表示,格式为 [start:stop:step]。 start:表示...
    99+
    2023-10-26
    python
  • Mycat 核心配置是怎么样的
    这篇文章给大家介绍Mycat 核心配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。常用配置文件间的关系由上图可以看到 Mycat 的核心配置文件均采用xml格式,这几个配置...
    99+
    2024-04-02
  • JavaScript中this的绑定规则是怎样的
    JavaScript中this的绑定规则是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。对于 JavaScript 新手来说,this ...
    99+
    2024-04-02
  • css中样式规则是什么
    这篇文章给大家分享的是有关css中样式规则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css的样式规则是:由选择器和声明块两个基本部分组成的。选择器决定为哪些元素应用样式;声明块定义相应的样式,它包含在一...
    99+
    2023-06-15
  • numpy数组切片规则是什么
    numpy数组的切片规则是用[start:end:step]的方式来进行切片。其中,start表示切片起始位置(包含),end表示切...
    99+
    2023-10-26
    numpy
  • MyCat分库分表中怎么实现ER分片
    这篇文章主要介绍“MyCat分库分表中怎么实现ER分片”,在日常操作中,相信很多人在MyCat分库分表中怎么实现ER分片问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyCat分库分表中怎么实现ER分片”的疑...
    99+
    2023-06-01
  • 微信小程序排名规则是怎么样的
    小编给大家分享一下微信小程序排名规则是怎么样的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.尽快注册 当企业想要开发小程序时就要知道申请注册时别再犹豫,尽早申请注册;申请注册越快,企业的小程序排名就越高。微信小程序如同...
    99+
    2023-06-27
  • CSS样式使用规则是什么
    这篇文章给大家分享的是有关CSS样式使用规则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一:CSS的描述 1、CSS通常称为CSS样式或层叠样式表,主要用于设置HT...
    99+
    2024-04-02
  • css样式层叠规则是什么
    小编给大家分享一下css样式层叠规则是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!CSS样式规则语法样式是CSS的基本单位,每个样式规则都是由选择器和声明块两个基本部分组成的。选择器(selector)决定为哪些元素...
    99+
    2023-06-08
  • python使用切片的三条规则是什么
    这篇文章主要为大家展示了“python使用切片的三条规则是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python使用切片的三条规则是什么”这篇文章吧。1、切片赋值的第一条规则是,由于切片...
    99+
    2023-06-20
  • python二维数组切片的规则是什么
    在Python中,二维数组通常是由嵌套的列表或NumPy数组表示的。对于二维数组的切片操作,可以按照以下规则进行:1. 切片操作类似...
    99+
    2023-10-12
    python
  • 数组分配给与容量相关的切片的规则是什么?
    目前编程网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《数组分配给与容量相关的切片的规则是什么?》,也希望能帮助到大家,如果阅读完后真的对你学习G...
    99+
    2024-04-05
  • link是css3新增的样式规则吗
    本篇内容主要讲解“link是css3新增的样式规则吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“link是css3新增的样式规则吗”吧! ...
    99+
    2024-04-02
  • PHP正则表达式preg_match的具体使用规则是怎样的
    这篇文章将为大家详细讲解有关PHP正则表达式preg_match的具体使用规则是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP对于初学者来说,最难理解的内容要属于正则表达式的应用...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作