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. ASP里面令人震撼地自定义Debug类(VBScript)

    不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便 我想可能很多朋友都会用这样的方法“response.write ”,然后输出相关的语句来看看是否正确.前几天 ...

  2. poj 3469 Dual Core CPU——最小割

    题目:http://poj.org/problem?id=3469 最小割裸题. 那个限制就是在 i.j 之间连双向边. 根据本题能引出网络流中二元关系的种种. 别忘了写 if ( x==n+1 ) ...

  3. 自己写的一个多应用程序多目录的Makefile

    DIR_INC = ./includeDIR_SRC = ./srcDIR_OBJ = ./objDIR_BIN = ./binINCLUDES = -I${DIR_INC} -I.CC => ...

  4. qt数据库sql语句使用c++中的变量

    void SerialWidget::on_btnMysql_clicked() { qDebug()<<QSqlDatabase::drivers()<<endl; /*列出 ...

  5. redis持久化  发布消息与订阅

    vi /usr/local/redis/etc/redis.conf  快照方式:     save 900 1     save 300 10     save 60 10000 aof方式: ap ...

  6. zookeeper.out: Permission denied错误解决方法

    [hadoop@node1 root]$ zkServer.sh start JMX enabled by default Using config: /opt/software/zookeeper- ...

  7. 嵌入式linux环境搭建

    花了两天时间,终于搭建好了板子上的linux驱动开发环境,不容易呀,做个笔记. 首先搭建PC上的编译环境,因为编译的驱动是在板子上运行的,第一步当然需要安装交叉编译器,即arm-none-linux- ...

  8. 内核启动流程3--Busybox的init进程

    Busybox是用来制作文件系统的一个工具集,可以用来替换GNU fileutils shellutils等工具集,它为各种小型的或者嵌入式系统提供了比较完全的工具集. 它提供的核心程序中包括了用户空 ...

  9. Elasticsearch集群使用ik分词器

    IK分词插件的安装 ES集群环境 VMWare下三台虚拟机Ubuntu 14.04.2 LTS JDK 1.8.0_66 Elasticsearch 2.3.1 elasticsearch-jdbc- ...

  10. hdu1080

    #include<iostream> using namespace std; char s1[105],s2[105]; int val[5][5]={ {5,-1,-2,-1,-3}, ...