mysql按天自动生成表分区的执行语句

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysql按天自动生成表分区的执行语句
CREATE TABLE `jk_data` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '数据ID主键',
  `jk_date` datetime NOT NULL COMMENT '时间日期格式',
  `jk_time` int(11) DEFAULT NULL COMMENT 'Unit格式的时间',
  `jk_sn` varchar(20) DEFAULT NULL COMMENT '设备序列号SN',
  `jk_counter` int(11) DEFAULT '0' COMMENT '设备计数器',
  `jk_ip` varchar(50) DEFAULT NULL COMMENT '设备在网络中的ip地址',
  `jk_isphysical` tinyint(2) DEFAULT '0' COMMENT '是否匹配了物理公式',
  `jk_eid` tinyint(4) DEFAULT '0' COMMENT 'ID号',
  `jk_wid` tinyint(2) DEFAULT '0' COMMENT '通道',
  `jk_wave` int(11) DEFAULT '0' COMMENT '波长',
  `jk_phyvalue` decimal(10,6) DEFAULT '0.000000' COMMENT '物理量',
  `jk_serialnum` varchar(20) DEFAULT NULL COMMENT '序列号',
  `jk_error` tinyint(2) DEFAULT '0' COMMENT '错误代码',
  `jk_warning` tinyint(2) DEFAULT '0' COMMENT '警告代码',
  PRIMARY KEY (`id`,`jk_date`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=304894 DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (TO_DAYS(jk_date)-1)
(PARTITION jk_data20201109 VALUES LESS THAN (738103) ENGINE = InnoDB,
 PARTITION jk_data20201110 VALUES LESS THAN (738104) ENGINE = InnoDB,
 PARTITION jk_data20201111 VALUES LESS THAN (738105) ENGINE = InnoDB,
 PARTITION jk_data20201112 VALUES LESS THAN (738106) ENGINE = InnoDB,
 PARTITION jk_data20201113 VALUES LESS THAN (738107) ENGINE = InnoDB,
 PARTITION jk_data20201114 VALUES LESS THAN (738108) ENGINE = InnoDB,
 PARTITION jk_data20201115 VALUES LESS THAN (738109) ENGINE = InnoDB,
 PARTITION jk_data20201116 VALUES LESS THAN (738110) ENGINE = InnoDB,
 PARTITION jk_data20201117 VALUES LESS THAN (738111) ENGINE = InnoDB,
 PARTITION jk_data20201118 VALUES LESS THAN (738112) ENGINE = InnoDB) */


创建存储过程

DROP PROCEDURE IF EXISTS topv.create_partition_jkdata;
CREATE DEFINER=`topv`@`%` PROCEDURE `create_partition_jkdata`()
BEGIN
/* 事务回滚,其实放这里没什么作用,ALTER TABLE是隐式提交,回滚不了的。*/
    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
    START TRANSACTION;
/* 到系统表查出这个表的最大分区,得到最大分区的日期。在创建分区的时候,名称就以日期格式存放,方便后面维护 */
    SELECT REPLACE(partition_name,'jk_data','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS
    WHERE table_name='jk_data' ORDER BY partition_ordinal_position DESC LIMIT 1;
     SET @Max_date= DATE(DATE_ADD(@P12_Name+0, INTERVAL 1 DAY))+0;
/* 修改表,在最大分区的后面增加一个分区,时间范围加1天 */
    SET @s1=CONCAT('ALTER TABLE jk_data ADD PARTITION (PARTITION jk_data',@Max_date,' VALUES LESS THAN (TO_DAYS (''',DATE(@Max_date),''')))');
    /* 输出查看增加分区语句*/
    SELECT @s1;
    PREPARE stmt2 FROM @s1;
    EXECUTE stmt2;
    DEALLOCATE PREPARE stmt2;
/* 取出最小的分区的名称,并删除掉 。
    注意:删除分区会同时删除分区内的数据,慎重 */
    /*select partition_name into @P0_Name from INFORMATION_SCHEMA.PARTITIONS
    where table_name='jk_data' order by partition_ordinal_position limit 1;
    SET @s=concat('ALTER TABLE jk_data DROP PARTITION ',@P0_Name);
    PREPARE stmt1 FROM @s;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1; */
/* 提交 */
    COMMIT ;
 END;


Done!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 固态存储 关系型数据库
Mysql数据库表分区存储到指定磁盘路径
0. 前提: mysql5.6.6以上的版本以上的版本才支持单表指定目录,且目录权限是mysql:mysql。 在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式、表文件个数也会有所差异。 mysql的表引擎有多种,表的扩展名也不一样,如innodb用“ .ibd”,archive用“.arc ”,csv用“.csv”等。
797 0
Mysql数据库表分区存储到指定磁盘路径
|
3月前
|
存储 关系型数据库 MySQL
(十九)MySQL之表分区篇:涨知识了!携手共探鲜为人知的表分区!
分库分表相信大家都听说过,但(partitioning)表分区这个概念却鲜为人知,MySQL在5.1版本中开始支持了表分区技术,同时在MySQL5.5中进行了优化,自从MySQL支持的绝大部分引擎都开启了表分区功能。
366 2
|
6月前
|
存储 关系型数据库 MySQL
MySQL表分区的选择与实践小结
当面对百万或千万级数据量的表,即使有索引,查询速度也可能较慢。此时,可以采取分库、分表或分区策略来提升性能。分库分表涉及创建新数据库或表,可能需更改逻辑代码;
85 3
|
关系型数据库 MySQL
Mysql 表分区创建方法
Mysql 表分区创建方法
|
SQL 存储 关系型数据库
【SQL应知应会】表分区(五)• MySQL版
【SQL应知应会】表分区(五)• MySQL版
285 0
|
SQL 存储 Oracle
【SQL应知应会】表分区(四)• MySQL版
【SQL应知应会】表分区(四)• MySQL版
289 0
|
SQL 存储 关系型数据库
【SQL应知应会】表分区(三)• MySQL版
【SQL应知应会】表分区(三)• MySQL版
225 0
|
SQL 存储 算法
【SQL应知应会】表分区(二)• MySQL版
【SQL应知应会】表分区(二)• MySQL版
257 0
|
存储 SQL 设计模式
【SQL应知应会】表分区(一)• MySQL版
【SQL应知应会】表分区(一)• MySQL版
289 0
|
前端开发 关系型数据库 MySQL
Echarts高级进阶教程(5):mysql大数据量分表分区的API接口读取语句
Echarts高级进阶教程(5):mysql大数据量分表分区的API接口读取语句
130 0