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. Flask ajax 动态html 的javascript 事件失效

    $('.db_edit').click(function(){ $(".editdbproduct").val($(this).parent().parent().find('.e ...

  2. fastjson缺陷--map转换json时出现$ref的情况

    DisableCircularReferenceDetect来禁止循环引用检测: JSON.toJSONString(..., SerializerFeature.DisableCircularRef ...

  3. LeetCode OJ:Rotate Image(旋转图片)

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  4. L125

    The United States Senate (参议院)has taken the first step toward ending President Barack Obama's health ...

  5. css3 hover 效果

    链接 链接 链接 链接 大量级 11 22  类似拉勾  33 包括各种流行的hover 小众 极光

  6. mysql int(3)与int(11)的区别

    总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果i ...

  7. MySQL 福利彩票业务 如何存储毫秒微秒

    朋友在做福利彩票业务,遇到一个存储毫秒微秒数据的需求,问我mysql里面有何解决方案.我脑中一搜索,以前没有关注到,于是去官网查看,找到11.3.6 Fractional Seconds in Tim ...

  8. windows C++ 全局异常捕捉函数

    windows 核心编程中讲过 SEH 结构化异常处理 ::SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); LONG WINAPI M ...

  9. Linux下安装SVN(Subversion)

    一.安装直接运行命令用YUM安装: yum install subversion -y 二.创建版本库创建版本库用svnadmin create命令,大概语法是svnadmin create svn库 ...

  10. mysql基本操作(重点)

    显示数据库 show databases 进入指定数据库 use 数据库名称 创建数据库 create database 数据库名称 default character set=utf8 删除数据库 ...