暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL自动按天加分区(很low版)

M.A.O. 2024-03-22
288
-- 这个是加分区的函数

delimiter $$
CREATE DEFINER=`root`@`%` PROCEDURE `数据库名`.`存名`(IN schemaname varchar(64),IN tablename varchar(64))
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '用于新建分区'
BEGIN 
declare p_name varchar(64);
declare p_time varchar(64);
SELECT from_days(MAX(t.PARTITION_DESCRIPTION)+1) into p_time FROM information_schema.`PARTITIONS` t WHERE t.TABLE_SCHEMA=schemaname AND t.TABLE_NAME=tablename;
SELECT date_format(from_days(MAX(t.PARTITION_DESCRIPTION)),'p%Y%m%d') into p_name FROM information_schema.`PARTITIONS` t WHERE t.TABLE_SCHEMA=schemaname AND t.TABLE_NAME=tablename;

set @v_add=concat('alter TABLE ',schemaname,'.',tablename,' ADD PARTITION (PARTITION ',p_name,' VALUES LESS THAN (to_days("',p_time,'")) ENGINE = InnoDB);');
PREPARE stmt from @v_add;
EXECUTE stmt;

END;$$


-- 加分区用的event -- 
delimiter $$
CREATE DEFINER=`root`@`%` EVENT `数据库名`.`尸检名` ON 
SCHEDULE EVERY 1 DAY STARTS '2024-05-01 00:00:00' ON COMPLETION PRESERVE ENABLE 
COMMENT 'xxx' 
DO BEGIN
CALL `数据库名`.`存名`('数据库名','要加的表名');
END;$$




-- 开启events
show variables like 'event%';
-- 如果是off
-- set global event_scheduler=on;

-- 检查事件状态
select EVENT_SCHEMA,EVENT_NAME,DEFINER,STATUS,LAST_EXECUTED,EVENT_COMMENT from information_schema.events;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论