【mysql分区分表】mysql 按时间分区 【partition】

大家好,我是烤鸭:
    今天分享一下有关 mysql 分区。

需求:

      按时间分区。 对千万数据左右的表,进行分区,数据的增加量大概千万/年。

代码实现:

 模拟之前已经存在的表:

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',`description` varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`state` tinyint(4) NULL DEFAULT 0 COMMENT '0:未处理,1:处理中,2:处理完成,3:异常订单',`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间'
) ;

  #取消自增


alter table test modify id int;

 #删除主键

alter table test drop PRIMARY KEY;

 #添加复合主键

alter table test add PRIMARY KEY(id,create_time);

 #id 改为自增

alter table test modify  id int AUTO_INCREMENT;

 #增加组合索引,分区的字段必须是唯一,所以唯一索引无法创建。

#ALTER TABLE test ADD UNIQUE (serial_no,delete_flag);

 #增加分区,按时间 1 年

ALTER TABLE test PARTITION BY RANGE COLUMNS(create_time ) (PARTITION p1 VALUES LESS THAN ( '20190101'),PARTITION p2 VALUES LESS THAN ( '20200101'),PARTITION p3 VALUES LESS THAN ( '20210101'),PARTITION p4 VALUES LESS THAN ( '20220101'),PARTITION p5 VALUES LESS THAN ( '20230101'),PARTITION p6 VALUES LESS THAN ( '20240101'),PARTITION p7 VALUES LESS THAN ( '20250101'),PARTITION p8 VALUES LESS THAN ( '20260101'),PARTITION p9 VALUES LESS THAN ( '20270101')
);

简单介绍:

mysql分区类型
    RANGE 分区:
        基于属于一个给定连续区间的列值,把多行分配给分区。
    LIST 分区:
        类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
    HASH分区:
        基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。
    KEY分区:

        类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
    复合分区:
        基于RANGE/LIST 类型的分区表中每个分区的再次分割。子分区可以是 HASH/KEY 等类型。

常用的命令:

 #创建表时分区:


CREATE TABLE `test`  (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',`description` varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`state` tinyint(4) NULL DEFAULT 0 COMMENT '0:未处理,1:处理中,2:处理完成,3:异常订单',`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`) USING BTREE,INDEX `etc_cg_document_i4`(`state`) USING BTREE,
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact PARTITION BY RANGE (`id`)PARTITIONS 2(PARTITION `p1` VALUES LESS THAN (10000) ENGINE = InnoDB MAX_ROWS = 0 MIN_ROWS = 0 ,PARTITION `p2` VALUES LESS THAN (20000) ENGINE = InnoDB MAX_ROWS = 0 MIN_ROWS = 0 )
;

 #增加分区:(以id分区)


alter table test partition by range(id)
(partition p1 values less than (10000),partition p2 values less than (20000)
);

 #删除指定分区:


alter table test drop partition p1;

 #删除所有分区:

Alter table test remove partitioning;    

  #查看分区信息

SELECTPARTITION_NAME,TABLE_ROWS 
FROMINFORMATION_SCHEMA.PARTITIONS 
WHERETABLE_NAME = 'test';

另外说下,如果删除分区,指定分区的数据也会同步删除,谨慎操作。

如果想mysql重建表分区并保留数据的的话,参考这篇:

https://blog.csdn.net/fdipzone/article/details/79769524

关于大数据量 mysql 优化看这篇:
https://blog.csdn.net/afsvsv/article/details/84998119

关于更多 mysql 分区的信息 看这篇文章:

https://www.cnblogs.com/sweet521/p/6439598.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOIp2018滚粗记

小蒟蒻chd在NOIp2018成功滚粗,下面向大家分享一下我的滚粗经验。 (CCF竟然把老爷机给换了) Day0 没什么好写的,反正就和平时一样。 Day1 早上6:50才起床,赶在7:20之前上了车,长沙理工大真的远,坐…

[css] 什么是zoom?它有什么作用?

[css] 什么是zoom?它有什么作用? zoom 最初是 IE 的私有属性,现在除了 Firefox 之外的浏览器基本都支持 zoom。不过,zoom 依旧不是正式的属性。与之对应的 transform 的 scale 属性是正式的 CSS 属性。zoom 主要的作用是用于元素…

【dubbo】http.conn.HttpHostConnectException.host: 'org.apache.http.HttpHost' could not be instantiated

大家好,我是烤鸭: dubbo遇到如下问题。 1. 异常详细信息: 某个异常对象无法实例化。 com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote method: updateCardBycustomerNum, provider: dubbo://20.x.xx.48:20883/com.etc.servi…

2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059

题意:BaoBao正在进行在线考试(都是选择题),每个题都有唯一的一个正确答案,但是考试系统有m个bug(就是有m个限制),每个bug表示为第u个问题和第v个问题你必须选择相同的选项,题目问你,…

[css] 举例说明微信端兼容问题有哪些?

[css] 举例说明微信端兼容问题有哪些? 说一个微信小程序的iPhoneX适配吧, 因为iPhoneX底部没有虚拟按键,底部的横线会出现遮挡这时候就要处理下: 大概思路就是获取到客户端设备,然后判断是iPhoneX就换样式。 在app.js…

多线程创建方式 线程池、Future和CompletableFuture

大家好,我是烤鸭: 今天说一下 多线程的几种创建方式及使用。 1. Thread 和 Runnable 继承 Thread 类 和实现 Runnable 接口。 这种就不举例子了。 2.线程池 现在主要有5种线程池。 //缓存线程池ExecutorService cachedThreadPool Executors.newCa…

[css] 你有没有自己写过一套UI库?说下遇到哪些难点?

[css] 你有没有自己写过一套UI库?说下遇到哪些难点? 维护过,碰到的坑主要是 1)同一个UI component在不同地方使用的customization问题。 2)还有如果UI component如果有bug的话会导致所有使用的地方都出现bug 3&#x…

权限设计文章汇总

如何设计网站权限系统? https://www.zhihu.com/question/20313385/answer/118095995 我的转载:https://www.cnblogs.com/hao-1234-1234/p/9850967.html 应用程序权限设计 http://www.cnblogs.com/yukaizhao/archive/2007/04/15/user_role_action_permiss…

dubbo 整合 zipkin,最简单的方式,亲测有效

大家好&#xff0c;我是烤鸭。 之前也试过网上很多版本&#xff0c;看了好多文章。现在分享最简单的方式&#xff0c;代码侵入性最小的。 1. 修改pom,引入jar。 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency><…

[css] 说说你对GPU的理解,举例说明哪些元素能触发GPU硬件加速?

[css] 说说你对GPU的理解&#xff0c;举例说明哪些元素能触发GPU硬件加速&#xff1f; GPU: 图形处理器,用于处理图形有关的任务,用于渲染页面在css中使用 transform: translateZ(0),可以开启GPU硬件加速个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容…

@Retention 注解的作用

注解Retention可以用来修饰注解&#xff0c;是注解的注解&#xff0c;称为元注解。Retention注解有一个属性value&#xff0c;是RetentionPolicy类型的&#xff0c;Enum RetentionPolicy是一个枚举类型&#xff0c;这个枚举决定了Retention注解应该如何去保持&#xff0c;也可理…

fastjson 1.2 版本之前的bug, 反序列化时自动排序,导致签名不过

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一个问题&#xff0c;使用fastjson 导致签名不过。 1. 问题复现&#xff1a; fastjson 1.2.4 获取返回值&#xff1a; {"data":[{"id":"120190422110857284042111114","bankAccountTyp…

[css] 你知道CSS中的字母“C“代表什么吗?

[css] 你知道CSS中的字母"C"代表什么吗&#xff1f; CSS(Cascading Style Sheets)。"C" 即为 Cascading 层叠的意思&#xff0c;我们编写 CSS 的时候&#xff0c;写在后面的样式会覆盖前面的样式即层叠。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流…

[Network Architecture]DPN(Dual Path Network)算法详解(转)

https://blog.csdn.net/u014380165/article/details/75676216 论文&#xff1a;Dual Path Networks 论文链接&#xff1a;https://arxiv.org/abs/1707.01629 代码&#xff1a;https://github.com/cypw/DPNs MXNet框架下可训练模型的DPN代码&#xff1a;https://github.com/m…

[css] 怎么自定义鼠标指针的图案?

[css] 怎么自定义鼠标指针的图案&#xff1f; cursor: url() ,auto url是自定义光标图案的绝对路径&#xff0c;auto是默认光标&#xff0c;当我们自定义的光标不起作用时&#xff0c;就用默认光标代替。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容…

javax.script.ScriptException: ReferenceError: xxx is not defined in eval

大家好&#xff0c;我是烤鸭&#xff1a; 今天使用 javax.script.ScriptEngine 遇到一个奇怪的问题&#xff0c;无法识别js方法。 1. 报错内容&#xff1a; javax.script.ScriptException: ReferenceError: "a" is not defined in <eval> at line number…

Python的特殊成员

Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格&#xff1a;避免用下划线作为变量名的开始。 现在我们来总结下所有的系统定义属性和方法&#xff0c; 先来看下保留属性&#…

[css] Reset CSS和Normalize CSS的区别是什么?

[css] Reset CSS和Normalize CSS的区别是什么&#xff1f; Reset&#xff1a;将所有浏览器的默认样式都统一化&#xff0c;注重的是跨浏览器统一样式&#xff0c;用户还要自行添加一些默认样式。 Normalize&#xff1a;会根据各个浏览器的不同保留有用的浏览器特色样式&#x…

java 实现 常见排序算法(四)基数排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之基数排序。 1. 基数排序&#xff1a; 原理&#xff1a;基数排序&#xff08;radix sort&#xff09;属于“分配式排序”&#xff08;distribution sort&#xff09;&#xff0c;又称“桶子法”&#…

vyos User Guide

vyos User Guide 来源 https://wiki.vyos.net/wiki/User_Guide The VyOS User Guide is focused on providing a general overview of the installation, configuration, and operation of the VyOS network operating system. Introduction VyOS is a Linux-based network ope…