迁移数据到历史表,减少业务表中数据压力 Mysql
#数据迁移存储过程
DROP PROCEDURE IF EXISTS `delete_platform_patient`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `delete_platform_patient`()
BEGIN
declare counts integer;-- 记录迁移条数
declare date_former datetime;-- 定义一个时间变量用来存放时间
declare result_code integer; -- 定义返回结果并赋初始值
declare CONTINUE HANDLER for SQLEXCEPTION set result_code=1; -- 在执行过程中出现任何异常result_code为1
select date_sub(now(),interval 3 month) into date_former; -- 获取三个月前的时间存入定义的时间变量中
select count(1) into counts from platform_patient where create_time<date_former or update_time<date_former;
start TRANSACTION;-- 进行事物处理
insert into platform_patient_historys select * from platform_patient p where p.create_time<date_former or p.update_time<date_former;-- 向历史表插入三个月前的数据
delete from platform_patient where create_time<date_former or update_time<date_former; -- 插入后就删除历史数据
insert into t_yh_move_data_log (time,tablename,count) values(NOW(),'platform_patient',counts);
IF result_code = 1 THEN -- 发生异常就回滚反之就提交
ROLLBACK;
ELSE
COMMIT;
END IF;
END
;;
DELIMITER ;
#每天定时触发
DROP EVENT
IF EXISTS `delete_platform_patient`;
DELIMITER ;;
CREATE DEFINER = `root`@`%` EVENT `delete_platform_patient` ON SCHEDULE EVERY 1 DAY STARTS '2019-07-30 01:10:00' ON COMPLETION PRESERVE ENABLE DO
CALL delete_platform_patient ();;
DELIMITER ;
#解决事件不起作用
set global event_scheduler = ON;show variables like 'event%';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)