网站首页 > 博客文章 正文
平时工作中所遇到的问题,今天为大家整理一下,废话不多说,直接上代码
建立存储过程后,需创建Mysql定时任务,来每天自动执行,我自动的版本,默认晚上11点自动调用存储过程
注:如表中存在数据,必须手动对已有数据建立分区,且分区为主键或者联合主键,下面直接贴代码,可根据自己实际情况进行修改。
-- 增加新分区
-- 不同于insert into A select from B,A必须存在。
SELECT max(cast(replace(partition_description, '''', '') AS date)) AS val
INTO v_maxdate
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'tb_visit' AND TABLE_SCHEMA = 'fzmy'; # 目标表 数据库实例名称,根据实际情况添加
set v_sysdate = sysdate(); # 赋值v_sysdate为当前时间
-- INTERVAL 时间计算的关键字
-- 当前写法默认创建三天后的分区表 可更改
WHILE v_maxdate <= (v_sysdate + INTERVAL 1 DAY) DO
SET v_pt = date_format(v_maxdate + INTERVAL 1 DAY , '%Y%m%d');
SET v_maxval = v_maxdate + INTERVAL 2 DAY;
SET add_sql = concat('alter table tb_visit add partition (partition p', v_pt, ' values less than(''', v_maxval, '''))'); # tb_visit 目标表,根据实际情况修改
SET @sql=add_sql;
PREPARE stmt FROM @sql; # 分配给这条SQL语句一个名字供之后调用
EXECUTE stmt; # 命令执行
DEALLOCATE PREPARE stmt; # 执行完后,释放掉
SET v_maxdate = v_maxdate + INTERVAL 1 DAY; # 最大值 加一操作
END WHILE;
-- 查找最早的分区
SELECT min(cast(replace(partition_description, '''', '') AS date)) AS val
INTO v_mindate
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'tb_visit' AND TABLE_SCHEMA = 'fzmy';# tb_visit 目标表,根据实际情况修改
-- 删除30天前的旧分区
WHILE v_mindate <= (v_sysdate - INTERVAL 30 DAY) DO
SET v_pt = date_format(v_mindate , '%Y%m%d');
SET del_sql = concat('alter table tb_visit drop partition p', v_pt); # tb_visit 目标表,根据实际情况修改
set @sql=del_sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET v_mindate = v_mindate + INTERVAL 1 DAY;
END WHILE;
END
------------------------------------- 此处为分界线 -------------------------------------------
-- 创建定时任务
create event ceshi_partition # 定时任务名称
-- 每天晚上23点执行(待验证)
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 23 HOUR)
on completion preserve disable
do call p_partition_test(); # 调用存储过程,此处为存储过程名称
猜你喜欢
- 2024-10-13 mssql与mysql的有什么区别?哪个更好用?
- 2024-10-13 「Excel函数与公式」DATE函数的用法解析
- 2024-10-13 Excel常用日期函数:14个公式满足工龄、年龄、账龄计算
- 2024-10-13 hibernate操作数据库相关注意点(简述hibernate操作数据库的步骤)
- 2024-10-13 玩转MySQL的时间类型:Date、DateTime、TimeStamp、Time
- 2024-10-13 13个日期时间函数公式,掌握一半以上的都是高手
- 2024-10-13 面试题:DATETIME 和 TIMESTAMP 的异同?
- 2024-10-13 MySQL的学习常识(mysql的基础知识)
- 2024-10-13 日期和时间函数之一:DATE、DATEVALUE、DAY
- 2024-10-13 MySQL 8.0 参考手册— 内置函数和运算符参考
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)