https://blog.csdn.net/webnum/article/details/78313525

 

分片规则:字符串拆分hash

一、conf/schema.xml文件

  1.  
    <?xml version="1.0"?>
  2.  
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  3.  
    <mycat:schema xmlns:mycat="http://io.mycat/">
  4.  
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
  5.  
    <table name="partition_by_string" primaryKey="ord_no" dataNode="dn$0-2"
  6.  
    rule="partition-by-string" />
  7.  
    </schema>
  8.  
    <dataNode name="dn0" dataHost="dh-1" database="db0"/>
  9.  
    <dataNode name="dn1" dataHost="dh-1" database="db1"/>
  10.  
    <dataNode name="dn2" dataHost="dh-1" database="db2"/>
  11.  
    <dataHost name="dh-1" maxCon="1000" minCon="10" balance="0"
  12.  
    writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  13.  
    <heartbeat>select user()</heartbeat>
  14.  
    <writeHost host="hostM1" url="localhost:3306" user="root"
  15.  
    password="123456">
  16.  
    </writeHost>
  17.  
    </dataHost>
  18.  
    </mycat:schema>

二、conf/rule.xml文件

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <!DOCTYPE mycat:rule SYSTEM "rule.dtd">
  3.  
    <mycat:rule xmlns:mycat="http://io.mycat/">
  4.  
    <tableRule name="partition-by-string">
  5.  
    <rule>
  6.  
    <columns>ord_no</columns>
  7.  
    <algorithm>partition-by-string</algorithm>
  8.  
    </rule>
  9.  
    </tableRule>
  10.  
    <function name="partition-by-string"
  11.  
    class="io.mycat.route.function.PartitionByString">
  12.  
    <property name="partitionLength">512</property> <!-- zero-based -->
  13.  
    <property name="partitionCount">2</property>
  14.  
    <property name="hashSlice">-6:0</property>
  15.  
    </function>
  16.  
    </mycat:rule>

三、规则文件信息

四、测试用到的sql

  1.  
    =============按照ord_no字段 字符串hash ================
  2.  
    CREATE TABLE partition_by_string (ord_no varchar(20) NULL,`db_nm` varchar(20) NULL);
  3.  
    INSERT INTO `partition_by_string` (ord_no,db_nm) VALUES (171022237582, database());
  4.  
    INSERT INTO `partition_by_string` (ord_no,db_nm) VALUES (171022553756, database());
  5.  
    select * from partition_by_string;

五、注意事项

分片数量必须小于等于dataNode数

六、参数说明

length代表字符串hash求模基数,count分区数,其中length*count=1024

hashSlice hash预算位,即根据子字符串中int值 hash运算

0 代表 str.length(), -1 代表 str.length()-1,大于0只代表数字自身

可以理解为substring(start,end),start为0则只表示0

例1:值“45abc”,hash预算位0:2 ,取其中45进行计算

例2:值“aaaabbb2345”,hash预算位-4:0 ,取其中2345进行计算

mycat1.6.5分片(字符串拆分hash)的更多相关文章

  1. 2016/4/5 Ajax ①用户名 密码 登陆 注册 ② 判断用户名是否已存在 ③点击按钮出现民族选项下拉菜单 ④DBDA类 加入Ajaxquery方法 数组变字符串 字符串拆分

    ①登陆   注册    查表匹配    0405Ajax.php   ②判断用户名是否存在 <!DOCTYPE html> <html lang="en"> ...

  2. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理

    一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...

  3. SQL2000/2005字符串拆分为列表通用函数

    ------------------------------------------------------------------ --  Author : htl258(Tony) --  Dat ...

  4. redis 2 字符串 和 hash

    string是最简单的类型,一个key对应一个value,string类型是二进制安全的.redis的string可以包含任何数据,比如JPG图片或者序列化的对象 操作    set    设置key ...

  5. sql之cursor的简介和字符串拆分(split)与游标的使用

     字符串拆分(split)与游标的使用 CREATE TABLE Plates ( ,), ) NOT NULL, [BusinessId] INT NOT NULL, ) ),),), SELECT ...

  6. SQL 字符串拆分

    字符串拆分: ALTER FUNCTION [dbo].[f_Split](@sText nvarchar(max),@split NVARCHAR(20)) RETURNS @t TABLE (id ...

  7. php将长字符串拆分为指定最大宽度的字符串数组

    /** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...

  8. 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格

    1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...

  9. Java字符串拆分和字符串连接

    Java字符串拆分/连接 public class LierString{ //------------------------------------------------------------ ...

随机推荐

  1. webpack打包APP的后端地址处理

    PC端我们用webpack打包,只需要写相对路径,发布的时候和后端接口在同一目录下即可. 但是做过APP或者混合开发的同学都知道,APP不需要发布的,如果后端地址还是用相对路径的话,可想而知,调用后端 ...

  2. python中http的一些编码转换

    http的数据需要2种编码解码. 1. url中的特殊字符转换, 比如",', :,//等 python3中通过urllib.parse.quote(..)和urllib.parse.unq ...

  3. JS---script的位置

    都可以,但各有千秋.放在head中:统一管理,方便维护:但浏览器会首先加载js文件,如果js文件过大,会造成页面在加载js的时候“无反应”时间过长,影响用户体验.放在body中(或放在body后):浏 ...

  4. SpringMvc之参数绑定注解详解之四

    简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...

  5. 关于cin

    今天同学调试一个简单的程序的时候发现了问题,我们两个讨论的时候弄出了好多乐子 #include <iostream> using namespace std; int main() { ; ...

  6. express搭建elasticsearch

    1.首先,我们创建一个Express应用程序!我将使用express.js生成器. npm install -g express-generator express ./autocompleter c ...

  7. 积累遇到过的linux终端操作指令

    mkdir mkdir命令是常用的命令,用来建立空目录,它还有2个常用参数: -m, --mode=模式 设定权限<模式> (类似 chmod) -p, --parents 需要时创建上层 ...

  8. 28.【转载】挖洞技巧:APP手势密码绕过思路总结

    说到APP手势密码绕过的问题,大家可能有些从来没接触过,或者接触过,但是思路也就停留在那几个点上,这里我总结了我这1年来白帽子生涯当中所挖掘的关于这方面的思路,有些是网上已经有的,有些是我自己不断摸索 ...

  9. 【Qt文档阅读】Window and Dialog Widgets

    Window and Dialog Widgets 没有嵌入到父控件中的控件(widget)称之为窗口(window).通常窗口带有边框和标题栏. Windows通常集成到桌面环境中,并且在某种程度上 ...

  10. C#事件2

    今天又来说一下C#中的事件,为什么会有这个又呢?一个是因为以前写过一篇关于事件的东西,二来呢是因为感觉接口这个东西完全可以替换委托来写事件.因为这两个方面的原因,重新过了一遍C#中的事件. 事件这个东 ...