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. UNITY_MATRIX_IT_MV[Matrix]

    http://blog.csdn.net/cubesky/article/details/38682975 前面发了一篇关于unity Matrix的文章. http://blog.csdn.NET/ ...

  2. orcal数据库得连接必须用localhost,url中不要用127.0.0.1,不然无法连接

    orcal数据库得连接必须用localhost,url中不要用127.0.0.1,不然无法连接,

  3. 关于系统中:/dev/mem

    1)参考:https://blog.csdn.net/lsn946803746/article/details/52948036   博主:lsn946803746 2)参考:https://blog ...

  4. 《Kubernetes权威指南第2版》学习(四)kubernetes基本概念和术语

    1: etcd是干什么的: 键-值存储仓库,用来配置共享和服务发现. k8s把Node, pod,replication controller, Services看做是资源对象,这些资源对象可以通过K ...

  5. win10系统-javac不是内部或外部命令

    给笔记本装了一个ssd,上午装的系统,重新搞jdk,设置JAVA_HOME之后,cmd运行javac报 “javac不是内部或外部命令”各种懵逼,试了好几次才发现Path路径里面不能用%JAVA_HO ...

  6. Java探索之旅(6)——对象和类

    1.知识要点 假设: public ClassName{     int data;   String name;     ClassName(){data=1;}     public static ...

  7. Pig Flatten 解包操作,解元组

    Flatten Operator The FLATTEN operator looks like a UDF syntactically, but it is actually an operator ...

  8. 关于C/C++中的“auto”关键字

    C/C++ 98标准 C++03标准 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期.此用法是多余的,因为即使定义变量时不加" ...

  9. C++成员指针

    C++中,成员指针是最为复杂的语法结构.但在事件驱动和多线程应用中被广泛用于调用回叫函数.在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数.在这样的应用中,如果不用成员指针,编程是非常困难 ...

  10. ArrayList反转

    Collections.reverse(arrayList); 下面看例子: import java.util.ArrayList;import java.util.Collections; publ ...