Mycat实战之离散分片
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实战之离散分片的更多相关文章
- Mycat实战之连续分片
		1 按照日期(天)分片: 从开始日期算起,按照天数来分片 例如,从2017-11-01,每10天一个分片且可以指定结束日期 注意事项:需要提前将分片规划好,建好,否则有可能日期超出实际配置分片数 1. ... 
- MYCAT实战之分片迁移
		实践扩容 1.要求: travelrecord 表定义为10个分片,尝试将10个分片中的 2 个分片转移到第二台MySQL上, 并完成记录要求,最快的数据迁移做法,中断业务时间最短 2.针对分片以及迁 ... 
- Mycat实战之配置EP分片
		ER分片介绍 以mycat逻辑库里面自带的例子,例如客户(CUSTOMER)跟订单(orders)以及订单条目(orders_item),订单条目依 赖订单表,订单表依赖客户,这样客户与订单以及订单条 ... 
- mycat 离散分片 -> 程序指定分区的分片
		1.程序指定分区的分片 此规则是在运行阶段有应用自主决定路由到那个分片. 此方法为直接依据字符子串(必须是数字)计算分区号(由应用传递參数.显式指定分区号). 2,加入配置文件 在function.x ... 
- Mycat实战之新增基于hash分片的表
		1. 修改rule.xml hash分片规则 主要改两个地方: vi rule.xml 分片数量,这里改为3 对应 三个库 hash规则 默认是id列 这里为 PROVINCE 2. reload 加 ... 
- 两种实现方式mycat多租户,枚举分片,注解拦截
		第一种: 优点:支持进一步分片 缺点:schema配置繁琐 注解式 /*!mycat:schema=[schemaName] */ 注意:这在navicat 里面是会报错的,请用命令行登陆myc ... 
- linux中mycat的配置,分片,以及主从复制
		1.1 安装环境 1.jdk:要求jdk必须是1.7及以上版本 2.Mysql:推荐mysql是5.5以上版本 1.2 安装步骤 Mycat有windows.linux多种版本.本教程为lin ... 
- Mycat安装及测试分片总结
		1.安装jdk1.72.连接实际mysql数据库 用命令行工具或图形化客户端,连接mysql,创建DEMO所用三个分片数据库:(默认schema.xml中的配置需要三个库) CREATE databa ... 
- Mycat实战之数据迁移(oracle -- mysql)
		1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ... 
随机推荐
- Java8_03_流
			一.前言 这一节我们来看下Java8的又一新特性:流. 本节主要包括以下内容: 流的相关概念 使用流 收集器 二.流的相关概念 流允许你以声明性方式处理数据集合,可以将其看成遍历数据集的高级迭代器. ... 
- linux下vim对于意外退出的文档的再次开启
			转载的: 1.对于同一个文件如果上次已经打开,而未关闭的情况下,又打开该文件进行编辑时,会出现如下提醒: 这是由于已经打开但未闭关的文件,会在其目录下出现一个.swp的文件,由于是属于隐藏文件,可以用 ... 
- shell与正则表达式
			作业一:整理正则表达式博客 已整理完.作业二:grep作业(正则表达式及字符处理) 目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行:[root@bogon ... 
- C++静态数据成员实现
			静态数据成员是在一个类中用关键字static声明的数据成员.在C++中,一般使用静态成员来代替C语言的全局变量,以达到数据共享.C和C++的全局变量有一定的局限性,可以任意被修改,也容易和其它的变量名 ... 
- Developing on Windows Phone 8 Devices
			Developing on Windows Phone 8 Deviceshttp://docs.madewithmarmalade.com/native/platformguides/wp8guid ... 
- 人生苦短之我用Python篇(安装第三方库、正则表达式)
			安装第三方库 两种方法, 一.在DOS界面下运行 pip3 install requests 二.切换至request目录下 cd E:\ python3 setup.py install ----- ... 
- larave 控制器中获取路由参数
			Laravel中获取路由参数Route Parameters的五种方法示例 作者:SeekerLiu 这篇文章主要给大家介绍了关于Laravel中获取路由参数Route Parameters的五种方法 ... 
- shell 中并发执行
			http://bbs.51cto.com/thread-1104907-1-1.html http://www.51testing.com/html/28/116228-238978.html htt ... 
- I/O多路复用方案
			1. 本节思维导图 2. 基本的网络编程接口 2.1 基于TCP的通信模型 2.2 基于UDP的通信模型 3. 非阻塞的服务器程序 file.pipe.fifo.socket在默认创建过程中都是阻塞的 ... 
- spring新心得
			一直觉得spring是最厉害的框架,说说最近从依葫芦画瓢到现在慢慢摸索他的思想的过程 以前什么都不懂,在xml上抄网上的东西,到大概知道是什么运作的 三种配装方式 1,<spring实战> ... 
