MyCat分片规则之程序指定分片
一、简介
- 实现方式:根据指定的分片字段以及分片规则,截取分片字段的字符串子串,根据字符串的子串(必须是数字)计算分区号(由调用方传递参数,显示指定分区号),例如,id=0-zhangsan,其中 id 是从 startIndex = 0,size=1,即截取的子串是0(数字) ,0 就是获取的分区,如果大于分区数,则分配到 defaultPartition 分区中。
- 优点:可以在运行阶段,由应用自主决定路由到那个分片
- 缺点:需要我们自己在应用里面实现分片规则
二、程序指定分片
【a】 创建数据库和表
create database custon_partition1;
use custon_partition1;
CREATE TABLE `user` (`id` bigint(20) NOT NULL,`name` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDBcreate database custon_partition2;
use custon_partition2;
CREATE TABLE `user` (`id` bigint(20) NOT NULL,`name` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB
【b】配置server.xml
<user name="root"><property name="password">0905</property><property name="schemas">TESTDB</property><!-- 表级 DML 权限设置 --><!-- <privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges> -->
</user><user name="user"><property name="password">user</property><property name="schemas">TESTDB</property><property name="readOnly">true</property>
</user>
【c】配置schema.xml分片表、分片节点等
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="1000"><table name="user" dataNode="dn1,dn2" primaryKey="id" rule="sharding-substring-partition" />
</schema><dataNode name="dn1" dataHost="dataHost01" database="custom_partition1" />
<dataNode name="dn2" dataHost="dataHost01" database="custom_partition2" /><dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="192.168.179.130:3306" user="root" password="0905" />
</dataHost>
【d】配置rule.xml分片规则
<tableRule name="sharding-substring-partition"><rule><columns>name</columns><algorithm>sharding-by-substring-user</algorithm></rule></tableRule><function name="sharding-by-substring-user" class="io.mycat.route.function.PartitionDirectBySubString"><property name="startIndex">0</property><property name="size">1</property><property name="partitionCount">2</property><property name="defaultPartition">0</property></function>
- 注意点:partitionCount分片数量最好与dataNode分片节点的个数保持一致。如下图MyCat报错日志就是因为我之前设置的partitionCount=8,实际dataNode只有两个。
【e】测试插入数据
insert into user(id,name) values(111,'0-zhangsan');
insert into user(id,name) values(222,'0-lisi');
insert into user(id,name) values(333,'1-wangwu');
insert into user(id,name) values(444,'3-zhaoliu'); //测试默认节点
如上图可见,成功实现了截取name的第一位作为分片节点的序号,也实现了没有满足提交分片节点的情况下默认分片的效果。
MyCat分片规则之程序指定分片相关推荐
- MyCat分片规则(全局表,ER分片表,多对多关联,主键分片VS非主键分片),MyCat常用的分片规则(15中分片规则),自定义MyCat分片规则,其它术语
1 MyCat分片规则 数据切分中重要的几条原则,其中有几条数据冗余,表分组(Table Group). 1.1全局表 如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或数据量 ...
- mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置
一.前言 本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置 二.Mycat分片配置 mycat分片主要在scheam.xml,rule.xml这2个表中配置 ① scheam ...
- mysql 分区 mycat 分片_Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)...
一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: select * from travelrecord where id in(5000001, 10000001) ...
- MySql使用MyCat分库分表(四)分片规则
视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定 ...
- mycat 常用分片规则使用详解
前言 在上一篇,详细了解了使用mycat进行数据库的垂直拆分和表的水平拆分,本篇在此基础上继续探讨mycat的常用分片规则. 什么是分片规则? 分片规则就是按照一定的规则(算法),将数据分散存储到多个 ...
- mycat分表之ER表分片、范围分片、取模分片、日期分片、全局表等
概述 数据库进行水平分表时,需要按照一定规则对数据进行分片. Mycat的分片策略可以分为两种: 连续分片和离散分片. 连续分片常用的有分片规则有: 范围分片. 日期分片. 优点:如果进行范围查询,比 ...
- mycat 分片规则
传统的分片策略都是基于单表,或者分片基于主键进行分配,或者某些场景下需要多个表依赖于一个分片,或者分片的字段并不是主键. a. 对于传统的数据库分片方式都是基于单个表格,对于表关联这种操作,则很难处 ...
- Mycat 分片规则---不以规矩,不能成方圆
分片规则概述 在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分.数据的聚合.选择合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理 ...
- Mycat分片规则详解
1.分片枚举 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则,配置如下: <tab ...
- MyCAT常用分片规则之分片枚举
MyCAT支持多种分片规则,下面测试的这种是分片枚举.适用场景,列值的个数是固定的,譬如省份,月份等. 在这里,需定义三个值,规则均是在rule.xml中定义. 1. tableRule 2. fun ...
最新文章
- java+jtextfield+取值_[求助]JTextfield 取值问题!
- ios基础篇(十二)——UINavgationController的使用(三)ToolBar
- Java反序列s ysoserial Spring
- window电脑H265(HEVC)编码的mp4不显示缩略图解决办法
- acm答案java_java-ACM详解(6)——栈 有答案版 全国软件设计大赛 参考试题
- c++ vector随机排序
- 系列课程 ElasticSearch 之第 6 篇 —— 自定义扩展分词文件、文档映射
- 轻快的vim(二):插入
- 罗斯福国家森林树木类型识别
- java如何画五角星_Java——绘制五角星
- ubuntu磁盘io性能测试工具hdparm
- c语言return 0和return 1的区别
- Linux基本常用命令|ubuntu获取root权限
- 移动互联网终端的touch事件,touchstart, touchend, touchmove
- python把标签图例放图外的下面 自动放在外侧
- AWS S3 挂载到EC2
- 仿联想商城laravel实战---4、验证(lavarel的表单验证如何使用)
- 大数据数据集下载地址
- 【lua 编程 模块详解】——详细lua编程的模块使用
- 双十二结束了,程序员如何设计一个秒杀系统?
热门文章
- java 向文件写数据_java向文件写数据的3种方式
- Docker 核心技术 NameSpace, CGroup, AUFS, DeviceMapper
- 高德地图如何取消订单_一文教你如何爬取高德地图
- lingo纳什均衡代码_数学建模练习题.
- 函数模板与函数的区别
- linux 进程 D 状态,Linux 进程的 Uninterruptible sleep(D) 状态
- linux常见命令用法之(二)
- 微积分中BW定理指的是什么
- 大学数学实验习题--统计推断 03(附答案)
- 104.二叉树的最大深度 (力扣leetcode) 博主可答疑该问题