网站首页 > 教程文章 正文
平时工作中所遇到的问题,今天为大家整理一下,废话不多说,直接上代码
建立存储过程后,需创建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-12-18 MySQL备份表数据,备份表名加上当前时间
- 2024-12-18 MySQL巧用公共表表达式(CTE)解决字符串的拆分
- 2024-12-18 在 Pandas 中使用 Merge、Join 、Concat合并数据的效率对比
- 2024-12-18 使用SQL语句将相同名的多行字段内容拼接起来
- 2024-12-18 如何避免出现 SQL 注入漏洞 如何有效防止sql注入
- 2024-12-18 MySQL递归查询上下级菜单 mysql如何递归查询
- 2024-12-18 做测试不会 SQL?超详细的 SQL 查询语法教程来啦
- 2024-12-18 mysql拼接函数讲解及配合截取函数使用
- 2024-12-18 Python语法之:Pandas数据合并总结
- 2024-12-18 比较常见类型漏洞讲解(三):SQL注入(一)
- 06-18CentOS7安装Mongodb 4.x.x(centos7安装openstack)
- 06-18Window环境配置Mongodb(mongodb默认配置文件路径)
- 06-18FineReport如何连接和使用MongoDB数据库
- 06-18nosql之mongodb(nosql怎么读正确发音)
- 06-18Mongodb centos7安装(mongodb4.4.2安装教程)
- 06-18群晖(Synology)NAS 安装 MongoDB(群晖安装nat123)
- 06-18MongoDB 安装及实践(mongodb的安装过程和操作命令)
- 06-18MongoDB最全详解(万字图文总结)(mongodb lsm)
- 最近发表
-
- CentOS7安装Mongodb 4.x.x(centos7安装openstack)
- Window环境配置Mongodb(mongodb默认配置文件路径)
- FineReport如何连接和使用MongoDB数据库
- nosql之mongodb(nosql怎么读正确发音)
- Mongodb centos7安装(mongodb4.4.2安装教程)
- 群晖(Synology)NAS 安装 MongoDB(群晖安装nat123)
- MongoDB 安装及实践(mongodb的安装过程和操作命令)
- MongoDB最全详解(万字图文总结)(mongodb lsm)
- CentOS安装MongoDB教程(centos安装mpich)
- MongoDB入门指南:下载、安装和配置一款强大的NoSQL数据库
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)