目录

一、简介

二、自然月分片


一、简介

一般来说,按自然月份来进行数据分片的规则比较适用于商城系统订单查询,类似最近三个月、最近半年等查询,这样的数据放在一个分片就省去了MyCat进行数据合并的时间, 当然按月分片之后每个自然月分片的数据量不要过大。

  • 实现方式:将数据按一年中的月份进行分片,每个自然月对应一个分片。
  • 优点:可以自由地将每个月的数据分开保存。
  • 缺点:由于数据是连续的,其他自然月分片中的资源无法被充分利用。

二、自然月分片

实现步骤:

【a】创建数据库和表

create database month1;
use month1;
......
//依次创建12个数据库和数据表

【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】配置分片规则rule.xml

<tableRule name="sharding-by-month"><rule><columns>createtime</columns><algorithm>partbymonth</algorithm></rule>
</tableRule><function name="partbymonth"class="io.mycat.route.function.PartitionByMonth"><property name="dateFormat">yyyy-MM-dd</property><property name="sBeginDate">2019-01-01</property>
</function>

【d】schema.xml配置分片表、分片节点等

<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="1000">             <table name="user" dataNode="dn$1-12" rule="sharding-by-month"/>
</schema><dataNode name="dn1" dataHost="localhost" database="month1" />
<dataNode name="dn2" dataHost="localhost" database="month2" />
<dataNode name="dn3" dataHost="localhost" database="month3" />
<dataNode name="dn4" dataHost="localhost" database="month4" />
<dataNode name="dn5" dataHost="localhost" database="month5" />
<dataNode name="dn6" dataHost="localhost" database="month6" />
<dataNode name="dn7" dataHost="localhost" database="month7" />
<dataNode name="dn8" dataHost="localhost" database="month8" />
<dataNode name="dn9" dataHost="localhost" database="month9" />
<dataNode name="dn10" dataHost="localhost" database="month10" />
<dataNode name="dn11" dataHost="localhost" database="month11" />
<dataNode name="dn12" dataHost="localhost" database="month12" /><dataHost name="localhost" 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>

【e】测试插入数据

insert into user(id,name,createtime) values(111,'zhangsan','2019-01-01');
insert into user(id,name,createtime) values(111,'zhangsan','2019-03-01');
insert into user(id,name,createtime) values(111,'zhangsan','2019-05-01');
insert into user(id,name,createtime) values(111,'zhangsan','2019-07-01');
insert into user(id,name,createtime) values(111,'zhangsan','2019-09-01');
insert into user(id,name,createtime) values(111,'zhangsan','2019-11-01');

【f】注意点:

  • 如果dateFormat格式是yyyy-MM-dd,那么插入的时间格式可以是满足yyyy-MM-dd,也可以是满足yyyy-MM-dd HH:mm:ss;
  • 反之,如果配置dateFormat格式是yyyy-MM-dd HH:mm:ss,如果插入的时间格式不是yyyy-MM-dd HH:mm:ss 格式的时间会报错,建议配置的是什么格式就使用怎么样的时间进行插入
  • 示例: 此时配置的dateFormat 为 yyyy-MM-dd。使用下面的语句插入数据:
insert into user(id,name,createtime) values(777,'zhangsan','2019-12-01 00:00:00');

测试结果:

可见,如果配置的dateFormat为yyyy-MM-dd的话,插入数据的时间格式为yyyy-MM-dd HH:mm:ss也能保存成功。

【g】下面我们修改一下dateFormat时间的格式:yyyy-MM-dd HH:mm:ss

rule.xml修改如下:

<function name="partbymonth"class="io.mycat.route.function.PartitionByMonth"><property name="dateFormat">yyyy-MM-dd HH:mm:ss</property><property name="sBeginDate">2019-01-01 00:00:00</property>
</function>

使用下面的语句插入数据:

insert into user(id,name,createtime) values(1234,'zhangsan','2019-02-01');

发现报错:

原因:因为时间格式不匹配,MyCat日志报错信息如下:无法解析的日期

如果使用下面的语句插入数据:

insert into user(id,name,createtime) values(1234,'zhangsan','2019-02-01 00:00:00');

  • 可以看到,插入成功,注意当配置dateFormat格式是yyyy-MM-dd HH:mm:ss,日期类型必须满足“2019-02-01 00:00:00”格式的时间,如果不满足可能会报错。
  • 注意点 : 如果是按月分片的问题,如果插入的月份超过了节点数,则就会插入报错,而且只能插入规则中指定的同一年,比如规则中开始是2019-01-01 那就不能插入2018年。

MyCat分片规则之按自然月分片相关推荐

  1. MyCat分片规则(全局表,ER分片表,多对多关联,主键分片VS非主键分片),MyCat常用的分片规则(15中分片规则),自定义MyCat分片规则,其它术语

    1 MyCat分片规则 数据切分中重要的几条原则,其中有几条数据冗余,表分组(Table Group). 1.1全局表 如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或数据量 ...

  2. mycat分片规则详解+实例演示

    mycat分片规则 1.环境准备 : 2.分片规则 2.1 取模分片 2.2 范围分片 2.3 枚举分片 2.4 范围求模算法 2.5 固定分片hash算法 2.6 取模范围算法 2.7 字符串has ...

  3. Mycat分片规则详解

    1.分片枚举 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则,配置如下: <tab ...

  4. mysql 分区 mycat 分片_Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)...

    一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: select * from travelrecord where id in(5000001, 10000001) ...

  5. MySql使用MyCat分库分表(四)分片规则

    视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxu's Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定 ...

  6. MySQL运维篇之Mycat分片规则

    3.5.3.Mycat分片规则 3.5.3.1.范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片. 示例: 可以通过修改autopartition-long.tx ...

  7. 【MySQL | 运维篇】06、MySQL 分库分表之 MyCat 分片规则

    目录 一.范围分片 1. 介绍 2. 配置 schema.xml逻辑表配置: schema.xml数据节点配置: rule.xml分片规则配置: 二.取模分片 1. 介绍 2. 配置 schema.x ...

  8. Mycat 分片规则---不以规矩,不能成方圆

    分片规则概述 在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分.数据的聚合.选择合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理 ...

  9. mycat 常用分片规则使用详解

    前言 在上一篇,详细了解了使用mycat进行数据库的垂直拆分和表的水平拆分,本篇在此基础上继续探讨mycat的常用分片规则. 什么是分片规则? 分片规则就是按照一定的规则(算法),将数据分散存储到多个 ...

  10. Mycat(三)——几种分片规则 分库 一致性hash的原理及使用

    文章目录 Mycat分片规则 取模 分库 schema.xml 分片枚举 schema.xml 测试 问题: 固定hash分片 优点 范围约定分片 按日期分区 按天分 一致性HASH 解决什么问题? ...

最新文章

  1. backup restore On Ubuntu
  2. 机器学习中的数学意义
  3. Jquery真的不难~第八回 JS的闭包问题
  4. Android系统Surface机制的SurfaceFlinger服务的线程模型分析
  5. 开源 RPC 框架有哪些呢?
  6. 跳转控制语句之break
  7. logminer java_使用OracleLogminer同步Demo1Demo介绍-博客园.PDF
  8. Ubuntu16.04安装Caffe(CPU Only)
  9. Java线程间通信-回调的实现方式
  10. LeetCode 96. 不同的二叉搜索树(Unique Binary Search Trees )
  11. 最低什么样的学历,才可以选择转行web前端?
  12. [置顶] EasyUI提交表单
  13. 拼多多打印订单有哪些软件?哪个软件好用呢?
  14. uniGUI session超时时间设置
  15. 知网论文CAJ格式免费转换成PDF,你学会了吗
  16. Jupyter notebook使用类错误提示 takes no arguments
  17. C++ endl 的本质是什么
  18. IEEE754浮点数简介
  19. macOS下载【转载】
  20. 几个著名的3D测试场景与模型

热门文章

  1. pyspark:basic_operating_1
  2. 容器技术Docker K8s 44 Serverless Kubernetes(ASK)详解-ASK弹性伸缩管理
  3. Git Push,Pull,Clone出现SSL certificate problem: unable to get local issuer certificate
  4. mySQL常用操作及基础知识
  5. Android studio显示红叉,提示Error:please select android sdk
  6. 【机器学习系列】隐马尔科夫模型第一讲:通俗易懂概述HMM
  7. 简单计算机组成原理,计算机组成原理简单总结(一)
  8. android mvp模式到底好,Android中MVP设计模式
  9. Linux下PHP开发环境搭建(Apache2.4+PHP7.1+MySQL8.0)
  10. linux模拟http请求命令