MySQL数据库,定时创建新分区,删除老分区

1. 修改表结构

alter table exchange_transaction_data_bibox modify column id bigint;
alter table exchange_transaction_data_bibox drop PRIMARY key;
alter table exchange_transaction_data_bibox add PRIMARY key(id, batch_no);
alter table exchange_transaction_data_bibox modify column id bigint auto_increment;
show create table exchange_transaction_data_bibox;

2. 添加分区

ALTER TABLE exchange_transaction_data_bibox PARTITION BY RANGE(batch_no)(
  partition p20190624 values less than(201906240000),
  PARTITION p20190924 values less than(201909240000)
);

3. 创建存储过程。删除90天前的分区,创建两天后的分区

drop PROCEDURE if EXISTS UPDATE_EXCHANGE_TABLE_PARTITION;
DELIMITER $$
CREATE PROCEDURE UPDATE_EXCHANGE_TABLE_PARTITION(in table_name VARCHAR(50))
BEGIN
 #1. 两天之后的long
 declare BATCH_NO BIGINT;
 declare BATCH_NO_NITY_BEFORE BIGINT;
 declare partition_name VARCHAR(20);
 declare partition_name90 VARCHAR(20);
    
 SET BATCH_NO = CAST(DATE_FORMAT(DATE_ADD(now(), INTERVAL 2 DAY), '%Y%m%d') as signed);
 SET BATCH_NO_NITY_BEFORE = CAST(DATE_FORMAT(DATE_SUB(now(), INTERVAL 91 DAY), '%Y%m%d') as signed);
 set partition_name = CONCAT('p', BATCH_NO);
 set partition_name90 = CONCAT('p', BATCH_NO_NITY_BEFORE);
    
 SET BATCH_NO = BATCH_NO * 10000;
 set @drop_part = CONCAT('alter table ', table_name, ' drop partition ', partition_name90);
 set @create_part = CONCAT('alter table ', table_name, ' add PARTITION (partition ', partition_name ,' values less than(', BATCH_NO ,'))');
    
 SELECT @drop_part,@create_part;
    
 PREPARE stmt FROM @create_part;
  EXECUTE stmt;
    
 PREPARE stmt FROM @drop_part;
  EXECUTE stmt;
END $$
DELIMITER ;

4. 创建定时任务

调用上面的存储过程,删除分区,创建分区

CREATE EVENT INSERT_PARTITION_EVENT ON SCHEDULE 
EVERY 1 DAY STARTS '2019-09-24 00:01:00'
DO
    CALL UPDATE_EXCHANGE_TABLE_PARTITION('exchange_transaction_data_bibox');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 6,023评论 0 9
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,663评论 1 8
  • SQL SERVER提供了多种索引。如果以存储结构结构来区分,有聚集索引和非聚集索引;如果以数据的唯一性来区分,则...
    不知名的蛋挞阅读 6,173评论 0 5
  • 回顾 字段类型(列类型):数值型,时间日期型和字符串类型 数值型:整型和小数型(浮点型和定点型) 时间日期型:da...
    翊溪阅读 1,073评论 0 0
  • 数据库的基本是概念名词解释: 数据库名词解释 元组:可以理解为表的每一行就是一个元组 候选码:若关系中的某一属性组...
    杰伦哎呦哎呦阅读 1,241评论 0 6

友情链接更多精彩内容