mysql自动按时间分区实例

#添加删除表分区存储过程
DELIMITER || 
DROP PROCEDURE IF EXISTS drop_Partition || 
CREATE PROCEDURE drop_Partition (IN databaseName VARCHAR(50),IN tableName VARCHAR(50)) 
L_END:BEGIN
   DECLARE i INT DEFAULT 0;
   WHILE i <= 2 DO
   SELECT PARTITION_NAME INTO @MIN_PARTITION
   FROM information_schema.PARTITIONS
   WHERE TABLE_SCHEMA = databaseName AND TABLE_NAME = tableName
   ORDER BY partition_description ASC LIMIT 1;
  
	SET @S=CONCAT('ALTER TABLE ',tableName,' DROP PARTITION ',@MIN_PARTITION);
	PREPARE stmt FROM @s;
        EXECUTE stmt;
        SELECT @s;
	SET i=i+1;
   END WHILE;
END L_END;|| 
DELIMITER ;

DELIMITER||
DROP EVENT IF EXISTS auto_drop_partitions||
CREATE EVENT auto_drop_partitions
	NO SCHEDULE
	EVERY 1 DAY STARTS '2016-12-01 23:59:59'
	BEGIN
	CALL drop_Partition('adverttj','records');
	END||
DELIMITER ;


CALL drop_Partition('adverttj','records');

SELECT partition_description INTO @MIN_PARTITION
FROM information_schema.PARTITIONS
WHERE TABLE_SCHEMA = 'adverttj' AND TABLE_NAME = 'records'
ORDER BY partition_description ASC LIMIT 1;

ALTER TABLE `records` DROP PARTITION p20161128

#查看分区分区
SELECT TABLE_NAME,PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='records'


#添加删除表分区存储过程
DELIMITER || 
DROP PROCEDURE IF EXISTS drop_Partition || 
CREATE PROCEDURE drop_Partition (IN databaseName VARCHAR(50),IN tableName VARCHAR(50)) 
L_END:BEGIN
   DECLARE i INT DEFAULT 0;
   WHILE i <= 2 DO
   SELECT partition_description INTO @MIN_PARTITION
   FROM information_schema.PARTITIONS
   WHERE TABLE_SCHEMA = datavaseName AND TABLE_NAME = tableName
   ORDER BY partition_description ASC LIMIT 1;
  
	SET @S=CONCAT('ALTER TABLE ',tableName,' DROP PARTITION p',@MIN_PARTITION,')';
	PREPARE stmt FROM @s;
        EXECUTE stmt;
        SELECT @s;
	SET i=i+1;
   END WHILE;
END L_END;|| 
DELIMITER ;

CALL drop_Partition('adverttj','records');

SELECT partition_description INTO @MIN_PARTITION
FROM information_schema.PARTITIONS
WHERE TABLE_SCHEMA = 'adverttj' AND TABLE_NAME = 'records'
ORDER BY partition_description ASC LIMIT 1;

ALTER TABLE `records` DROP PARTITION p20161128

#查看分区分区
SELECT TABLE_NAME,PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='records'


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值