博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL每天自动增加分区
阅读量:4583 次
发布时间:2019-06-09

本文共 1951 字,大约阅读时间需要 6 分钟。

1、在进行自动增加分区前一定得先对表手动分几个区

ALTER TABLE tb_3a_huandan_detail PARTITION BY RANGE (TO_DAYS(ServiceStartTime)) (     PARTITION p20160523 VALUES LESS THAN (TO_DAYS('2016-05-23')),     PARTITION p20160524 VALUES LESS THAN (TO_DAYS('2016-05-24')),     PARTITION p20160525 VALUES LESS THAN (TO_DAYS('2016-05-25')),     PARTITION p20160526 VALUES LESS THAN (TO_DAYS('2016-05-26')),     PARTITION p20160527 VALUES LESS THAN (TO_DAYS('2016-05-27')) ) 2、分区存过如下:

     DELIMITER $$

    USE `sdk`$$

      ROP PROCEDURE IF EXISTS `create_Partition_3Ahuadan`$$

      CREATE DEFINER=`root`@`localhost` PROCEDURE `create_Partition_3Ahuadan`()
      EGIN
      /* 事务回滚,其实放这里没什么作用,ALTER TABLE是隐式提交,回滚不了的。*/
     DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
     START TRANSACTION;
      /* 到系统表查出这个表的最大分区,得到最大分区的日期。在创建分区的时候,名称就以日期格式存放,方便后面维护 */
     SELECT REPLACE(partition_name,'p','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS 
      WHERE table_name='tb_3a_huandan_detail' 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 tb_3a_huandan_detail ADD PARTITION (PARTITION p',@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='tb_3a_huandan_detail' order by partition_ordinal_position limit 1;
       SET @s=concat('ALTER TABLE tb_3a_huandan_detail DROP PARTITION ',@P0_Name);
       PREPARE stmt1 FROM @s; 
      EXECUTE stmt1; 
      DEALLOCATE PREPARE stmt1; */
      /* 提交 */
      COMMIT ;
      END$$
      DELIMITER ;

3、增加定时事件

        DELIMITER ||

        CREATE EVENT Partition_3Ahuadan_event
        ON SCHEDULE
        EVERY 1 day STARTS '2016-05-27 23:59:59'
        DO
        BEGIN
       CALL nres.`create_Partition_3Ahuadan`;
       END ||
       DELIMITER ;

转载:https://www.cnblogs.com/lanceblog/p/5532068.html

转载于:https://www.cnblogs.com/wy321/p/9934477.html

你可能感兴趣的文章
javasrcipt中的for in 循环
查看>>
git命令的使用 【备用】
查看>>
uva1391 2-SAT 问题
查看>>
冲刺2-4
查看>>
Matlab画图-非常具体,非常全面
查看>>
泛泰A880S升级官方4.4.2 binx教程
查看>>
Python装饰器
查看>>
Java String format 对%的处理
查看>>
跨平台移动应用开发AppCan开发文档阅读指南
查看>>
Lind.DDD敏捷领域驱动框架~介绍
查看>>
PHP自带函数给数字前补0或补位(转)
查看>>
iOS runtime实用篇--和常见崩溃say good-bye!
查看>>
细说Cookie
查看>>
Javascript 第二章
查看>>
几个常用算法及反射+多线程调用
查看>>
ubuntu12.04 上面配置blogilo的博客园客户端的步骤
查看>>
Codeforces Gym101170I:Iron and Coal(建多幅图+多次BFS)***
查看>>
Python杂俎 —— 自动压缩指定格式文件&自动删除
查看>>
2017年01月。。
查看>>
bcmath(精准数学的计算)
查看>>