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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 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!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 固态存储 关系型数据库
Mysql数据库表分区存储到指定磁盘路径
0. 前提: mysql5.6.6以上的版本以上的版本才支持单表指定目录,且目录权限是mysql:mysql。 在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式、表文件个数也会有所差异。 mysql的表引擎有多种,表的扩展名也不一样,如innodb用“ .ibd”,archive用“.arc ”,csv用“.csv”等。
Mysql数据库表分区存储到指定磁盘路径
|
存储 关系型数据库 MySQL
(十九)MySQL之表分区篇:涨知识了!携手共探鲜为人知的表分区!
分库分表相信大家都听说过,但(partitioning)表分区这个概念却鲜为人知,MySQL在5.1版本中开始支持了表分区技术,同时在MySQL5.5中进行了优化,自从MySQL支持的绝大部分引擎都开启了表分区功能。
1164 2
|
存储 关系型数据库 MySQL
MySQL表分区的选择与实践小结
当面对百万或千万级数据量的表,即使有索引,查询速度也可能较慢。此时,可以采取分库、分表或分区策略来提升性能。分库分表涉及创建新数据库或表,可能需更改逻辑代码;
145 3
|
关系型数据库 MySQL
Mysql 表分区创建方法
Mysql 表分区创建方法
|
关系型数据库 MySQL
MySQL 横向表分区之RANGE分区小结
MySQL 横向表分区之RANGE分区小结
210 0
MySQL 横向表分区之RANGE分区小结
|
SQL 存储 关系型数据库
【SQL应知应会】表分区(五)• MySQL版
【SQL应知应会】表分区(五)• MySQL版
389 0
|
SQL 存储 Oracle
【SQL应知应会】表分区(四)• MySQL版
【SQL应知应会】表分区(四)• MySQL版
372 0
|
SQL 存储 关系型数据库
【SQL应知应会】表分区(三)• MySQL版
【SQL应知应会】表分区(三)• MySQL版
258 0
|
SQL 存储 算法
【SQL应知应会】表分区(二)• MySQL版
【SQL应知应会】表分区(二)• MySQL版
322 0
|
存储 SQL 设计模式
【SQL应知应会】表分区(一)• MySQL版
【SQL应知应会】表分区(一)• MySQL版
373 0

推荐镜像

更多