1 枚举分片(customer表)

1.1 修改配置信息加载配置文件

<tableRule name="sharding-by-intfile">
<rule>
<columns>datanode</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule> vi partition-hash-int.txt
db1=0
db2=1
[root@mysqldb conf]#

1.2 insert演示路由信息以及mycat日志

mysql> insert into customer(id,customer_id,datanode) values(2,2,'db2');
Query OK, 1 row affected (0.00 sec) mysql> explain insert into customer(id,customer_id,datanode) values(1,1,'db1');
+-----------+-----------------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+-----------------------------------------------------------------+
| dn1 | insert into customer(id,customer_id,datanode) values(1,1,'db1') |
+-----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

查看mycat日志

1.3 查询路由信息以及mycat日志

mysql> explain select * from customer where datanode='db1';
+-----------+---------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+---------------------------------------------------------+
| dn1 | SELECT * FROM customer WHERE datanode = 'db1' LIMIT 100 |
+-----------+---------------------------------------------------------+
1 row in set (0.00 sec) mysql> select * from customer where datanode='db1';
+----+-------------+----------+
| id | customer_id | datanode |
+----+-------------+----------+
| 1 | 1 | db1 |
+----+-------------+----------+
1 row in set (0.01 sec)

mycat日志路由信息

2 程序指定分区的分片

此规则是在运行阶段有应用自主决定路由到那个分片。
此方法为直接根据字符子串(必须是数字)计算分区号(由应用传递参数,显式指定分区号)。

2.1 修改配置文件

vi rule.xml
<function name="sharding-by-substring" class="org.opencloudb.route.function.PartitionDirectBySubString">
<property name="startIndex">0</property>
<property name="size">1</property>
<property name="partitionCount">8</property>
<property name="defaultPartition">0</property>
</function> <tableRule name="sharding-by-substring">
<rule> <columns>id</columns>
<algorithm>sharding-by-substring</algorithm>
</rule>
</tableRule> vi schema.xml
#增加tablerule
<table name="mycatbysubstring" primaryKey="ID" dataNode="dn1,dn2,dn3" rule="sharding-by-substring"/> #加载配置文件
reload @@config

2.2 创建表 插入数据

 create table mycatbysubstring (id  varchar(64) not null  primary key,create_time datetime,datanode varchar(10))

 insert into mycatbysubstring (id,create_time,datanode) values('0-10000000','2017-06-25',database());
insert into mycatbysubstring (id,create_time,datanode) values('1-10000000','2017-06-25',database());

针对插入语句,分析mycat.log日志

2.3 查询语句 分片字段是等值运算,分析mycat.log

mysql>  select * from mycatbysubstring where id='1-10000000';
+------------+---------------------+----------+
| id | create_time | datanode |
+------------+---------------------+----------+
| 1-10000000 | 2017-06-25 00:00:00 | db2 |
+------------+---------------------+----------+
1 row in set (0.06 sec) mysql> explain select * from mycatbysubstring where id='1-10000000';
+-----------+------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+------------------------------------------------------+
| dn2 | select * from mycatbysubstring where id='1-10000000' |
+-----------+------------------------------------------------------+
1 row in set (0.00 sec)

分析mycat.log日志

2.4 查询语句:like查询,查询也是所有dbn上,分析mycat.log

mysql> explain select * from mycatbysubstring where id like '1%';
+-----------+-------------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+-------------------------------------------------------------+
| dn1 | SELECT * FROM mycatbysubstring WHERE id LIKE '1%' LIMIT 100 |
| dn2 | SELECT * FROM mycatbysubstring WHERE id LIKE '1%' LIMIT 100 |
| dn3 | SELECT * FROM mycatbysubstring WHERE id LIKE '1%' LIMIT 100 |
+-----------+-------------------------------------------------------------+
3 rows in set (0.02 sec)

分析mycat.log日志

Mycat实战之离散分片的更多相关文章

  1. Mycat实战之连续分片

    1 按照日期(天)分片: 从开始日期算起,按照天数来分片 例如,从2017-11-01,每10天一个分片且可以指定结束日期 注意事项:需要提前将分片规划好,建好,否则有可能日期超出实际配置分片数 1. ...

  2. MYCAT实战之分片迁移

    实践扩容 1.要求: travelrecord 表定义为10个分片,尝试将10个分片中的 2 个分片转移到第二台MySQL上, 并完成记录要求,最快的数据迁移做法,中断业务时间最短 2.针对分片以及迁 ...

  3. Mycat实战之配置EP分片

    ER分片介绍 以mycat逻辑库里面自带的例子,例如客户(CUSTOMER)跟订单(orders)以及订单条目(orders_item),订单条目依 赖订单表,订单表依赖客户,这样客户与订单以及订单条 ...

  4. mycat 离散分片 -&gt; 程序指定分区的分片

    1.程序指定分区的分片 此规则是在运行阶段有应用自主决定路由到那个分片. 此方法为直接依据字符子串(必须是数字)计算分区号(由应用传递參数.显式指定分区号). 2,加入配置文件 在function.x ...

  5. Mycat实战之新增基于hash分片的表

    1. 修改rule.xml hash分片规则 主要改两个地方: vi rule.xml 分片数量,这里改为3 对应 三个库 hash规则 默认是id列 这里为 PROVINCE 2. reload 加 ...

  6. 两种实现方式mycat多租户,枚举分片,注解拦截

    第一种: 优点:支持进一步分片 缺点:schema配置繁琐 注解式  /*!mycat:schema=[schemaName] */   注意:这在navicat 里面是会报错的,请用命令行登陆myc ...

  7. linux中mycat的配置,分片,以及主从复制

    1.1    安装环境 1.jdk:要求jdk必须是1.7及以上版本 2.Mysql:推荐mysql是5.5以上版本 1.2  安装步骤 Mycat有windows.linux多种版本.本教程为lin ...

  8. Mycat安装及测试分片总结

    1.安装jdk1.72.连接实际mysql数据库 用命令行工具或图形化客户端,连接mysql,创建DEMO所用三个分片数据库:(默认schema.xml中的配置需要三个库) CREATE databa ...

  9. Mycat实战之数据迁移(oracle -- mysql)

    1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ...

随机推荐

  1. Java 学习笔记(121208)

    Java 修饰符 访问修饰符 修饰符 当前类 同一包内 子孙类 其他包 public Y Y Y Y protected Y Y Y N default Y Y N N private Y N N N ...

  2. mybatis分页插件使用注意

    之前的项目用的数据库是mysql,在pom.xml引入这一个就能分页了. 后来又开了一个项目,使用的是oracle数据库,我写分页的时候发现不能实现,在网上找到资料说是必须要5.0以上的.我就导了这依 ...

  3. jQuery对象[0]倒底是什么?

    s[0]倒底是什么?(s为jQuery对象)代码:var s=$("div"); alert(s.length);alert(s[0]); jQuery对象默认都有个0索引,s为j ...

  4. 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象

    3.2.1 什么是KIE KIE(Knowledge Is Everything),知识就是一切的简称.JBoss一系列项目的总称,在<Drools使用概述>章节已经介绍了KIE包含的大部 ...

  5. ng 过滤器

    1.ng中自带的过滤器过滤器:实现对数据的筛选.过滤.格式化. 过滤器是一个有返回值的方法. 过滤器语法:{{ expression |过滤器1:'参数' | 过滤器2:'参数' }} | --> ...

  6. php session在高并发时可能存在的问题。

    如果同一个客户端并发发送多个请求,而每个请求都使用了Session,那么PHP Session锁的存在会导致服务器串行响应这些请求,而不是并行.这是因为在默认情况下,PHP使用文件存储Session数 ...

  7. (五)js数组方法二

    一:数组方法 var arr = []; 1.arr.push()//给数组末尾<添加>元素 2.arr.unshift()//给数组头部<添加>元素 3.arr.shift( ...

  8. Java进阶知识点4:不可变对象与并发 - 从String说起

    一.String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态.当确实需要修改Strin ...

  9. Docker运行GUI软件的方法

    转自 https://www.csdn.net/article/2015-07-30/2825340 简介: Docker通过namespace将容器与主机上的网络和运行环境进行了隔离,默认情况下,在 ...

  10. 关于file.writelines换行符的添加

    和file.readlines/readline不同,file.writelines(l)如果l元素没有换行符,writelines是不会自动加入换行符的,需要我们自己添加,就像这样. import ...