• Mysql自动按月分区


    mysql创建分区时依赖字段需要设为主键 例 我的依赖字段为collect_time

    需要先创建至少一个分区 例:创建第一个分区时间小于’2020-02-01’
    ALTER TABLE tb_electric_power_info PARTITION BY RANGE (TO_DAYS(collect_time))
    (partition p20200201 values less than (to_days(‘2020-02-01’))
    )
    创建存储过程自动分区
    BEGIN
    #Routine body goes here...

    /* 到系统表查出这个表的最大分区,得到最大分区的日期。在创建分区的时候,名称就以日期格式存放,方便后面维护 */
    SELECT REPLACE(partition_name,'p','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS
    WHERE table_name='tb_electric_power_info' ORDER BY partition_ordinal_position DESC LIMIT 1;
    SET @Max_date= DATE(DATE_ADD(@P12_Name+0, INTERVAL 1 MONTH))+0;
    /* 修改表,在最新分区的后面增加一个分区,时间范围加1月 */
    SET @s1=CONCAT('ALTER TABLE tb_electric_power_info
    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_electric_power_info' 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 
    3.新建事件在每个月1号触发


    ————————————————
    版权声明:本文为CSDN博主「tyroxyz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38762283/article/details/105578950

  • 相关阅读:
    Hammer.js--转载自李林峰的园子
    nodejs--模块
    gruntjs
    玩转github----1
    模块化开发--sea.js
    事件委托
    css兼容问题
    轮播图
    Spring整合Hibernate 二
    Spring整合Hibernate 一
  • 原文地址:https://www.cnblogs.com/javalinux/p/14962960.html
Copyright © 2020-2023  润新知