要求内容:要求在每天的凌晨一点定时删除sys_msg_offline表上的上一个月数据,防止表中数据过多
注意内容:为防止删除的数据量过大,造成删除时出现卡库,必须限制每次删除的数量(建议1000条)
设计思路:采用mysql自带的event事件,设计一个存储过程用于删除数据,之后创建event运行存储过程即可。
表结构:

DROP TABLE IF EXISTS `sys_msg_offline`;
CREATE TABLE `sys_msg_offline` (`username` varchar(64) NOT NULL,`messageID` bigint(20) NOT NULL,`creationDate` char(15) NOT NULL,`messageSize` int(11) NOT NULL,`stanza` text NOT NULL,`resource` varchar(32) DEFAULT NULL,PRIMARY KEY (`username`,`messageID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC ;

注意:creationDate中存放的是当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。

一、设置开启事件设置

1、查看是否开启定时器

SHOW VARIABLES LIKE 'event_scheduler';     /*查看定时器状态*/

2、开启定时器 0:off 1:on

SET GLOBAL event_scheduler = 1;             /*开启事件设置*/

当你设定事件计划为0 或OFF,即关闭事件计划进程的时候,不会有新的事件执行,但现有的正在运行的事件会执行到完毕

对于我们线上环境来说,使用event时,注意在主库上开启定时器,从库上关闭定时器,event触发所有操作均会记录binlog进行主从同步,从库上开启定时器很可能造成卡库。切换主库后之后记得将新主库上的定时器打开。
请特别注意!

二、创建储存过程

DELIMITER $
CREATE PROCEDURE  pro_clear_data()
BEGIN    SET @news_date=(select UNIX_TIMESTAMP((select date_sub(NOW(),interval 1 MONTH))) * 1000); /*设定删除数据的时间*/SET @max_id=(SELECT MAX(messageID) from sys_msg_offline where creationDate <= @news_date); /*设定需要删除数据的最大messageID*/SET @news_count=(SELECT COUNT(messageID) FROM sys_msg_offline where messageID <= @max_id);  /*设定删除数据数量*/WHILE @news_count >0 DO/*删除需要删除的数据,一次最多1000*/SET @news_count=(SELECT COUNT(messageID) FROM sys_msg_offline where messageID <= @max_id); /*刷新删除数据数量*/END WHILE;
END $

三、创建事件

CREATE EVENT IF NOT EXISTS event_time_clear_data
ON SCHEDULE EVERY 1 DAY STARTS date_add(date( ADDDATE(curdate(),1)),interval 1 hour)
ON COMPLETION PRESERVE
DO CALL pro_clear_data();

四、开启事件

ALTER EVENT event_time_clear_data ON COMPLETION PRESERVE ENABLE;

另附:关闭事件SQL语句

ALTER EVENT event_time_clear_data ON COMPLETION PRESERVE DISABLE;  

MYSQL:指定时间删除过期数据相关推荐

  1. mysql指定时间转换成yyyy-mm-dd_如何在MySQL中将特定日期的MM / YY转换为YYYY-MM-DD?...

    要进行转换,请使用STR_TO_DATE(),如以下语法所示.将日值与CONCAT()-连接select str_to_date(concat('yourDateValue/', yourColumn ...

  2. php根据修改时间删除指定目录下文件

    //$dir-文件地址,$files-存储返回数组,$type-查找文件类型组public function read_dir($dir,&$files,$type) {if(!is_dir( ...

  3. oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...

    清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...

  4. 使用ffmpeg剪辑视频【删除视频头部,尾部,中间,视频拼接,获取视频指定时间截图】

    使用ffmpeg剪辑视频[删除视频头部,尾部,中间,视频拼接,获取视频指定时间截图] 引入pom <dependency><groupId>org.bytedeco</g ...

  5. mysql 分钟_MySQL如何获取一个指定时间中的分钟数(MINUTE函数)呢?

    摘要: 下文讲述MySQL数据库中获取指定时间数据中的分钟数的方法分享,如下所示: 实现思路: 使用MINUTE(time)系统函数即可返回日期中的分钟信息 MINUTE系统函数语法说明: MINUT ...

  6. mysql 指定回滚_mysql回滚到指定时间点

    # mysql回滚到指定时间点 > 回滚是基于全量备份+增量binlog, 如果binlog没开启, 只能跑路了 场景模拟: > 线上数据库 marketing 在1月5号做了一次全量备份 ...

  7. Linux删除指定时间的文件(比如几分钟前(后),几天前(后))

    要执行这个命令分三步: 1.先找出该目录下名字符合的文件: 2.过滤出指定时间内的文件: 3.执行删除命令. 1 找出指定条件的文件 - find 命令 比如找出当前目录下的所有txt文件 find ...

  8. 修改mysql数据库服务器时间格式,修改本地mysql数据库时间格式

    修改本地mysql数据库时间格式 内容精选 换一换 云数据库 GaussDB(for MySQL)仅按使用情况付费,没有最低收费.GaussDB(for MySQL)对您选择的数据库实例.数据库存储和 ...

  9. mysql 二进制日志删除_MYSQL 删除二进制日志的 3 个方法

    方法 1: reset master; ------------------ 删除前: 删除日志: 删除后: ----------------------------------------    可 ...

最新文章

  1. 网站收录上不去估计是这几个方面出了问题
  2. Codeforces 777E:Hanoi Factory(贪心+栈)
  3. 人脸识别及对比_没有“色彩对比可及性的神话”
  4. Javascript构造函数的继承
  5. Asterisk 1.4.42将成绝唱
  6. python 生成xml文件
  7. leetcode - 198. 打家劫舍
  8. 一种非常简单的静态网页生成方法介绍
  9. html checkbox 多选 根据数据库来显示选取和未选取,前端框架(2)DIV多选复选框框的封装和MySql数据库存取...
  10. TLS/SSL 通讯中的证书问题
  11. android root测试,[原创]安卓逆向之绕过root检测的四种姿势
  12. 跨考计算机无法调剂,考研调剂又出新变化:“不能跨学科门类调剂”!
  13. shell遍历ip执行特定功能
  14. 大话 Redis 数据结构
  15. 【第一个Vue上手小项目Day4】史上最简单的Element-table表格+Pagination 分页(前后端结合)
  16. 【arc075f】AtCoder Regular Contest 075 F - Mirrored
  17. Python 02 Selenium 账号密码登录CSDN
  18. 解决Android 8.1 获取不到wifi名称
  19. PCL入门系列 —— StatisticalOutlierRemoval 点云统计滤波
  20. JUC学习(二):Lock的介绍及使用(实现多线程卖票)

热门文章

  1. 【程序猿历程】一个三年工作经验和月薪16k的java程序员应该要具备什么样的技能?
  2. sikuli python java_python怎么调用sikuli
  3. 经营财务体系与财务数字化转型
  4. sojson.v5 | jsjiami.com.v5 最新解密方法
  5. 理论力学(静力学)-1-五个公理
  6. ohmyzsh主题修改
  7. Nginx安装后添加ssl模块
  8. 新浪短链接服务Android,新浪长链接转短连接API
  9. python求本原根
  10. ORACLE 多表 查询作业