mysql删除表数据的语句(Mysql实现定时清空一张表的旧数据并保留几条数据推荐)
mysql删除表数据的语句
Mysql实现定时清空一张表的旧数据并保留几条数据推荐要达到如下目的:
Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据超过了20条(这个数据也是自定义的,也可以是200条),就保留最新的10条数据(这个数据同样可以自定义,但要小于等于之前的超过数据条数)。
简单说一下解决的思路(从后往前推导):
1、开启一个定时器,这个定时器做了两件事:
⑴设置了时间间隔
⑵调用一个存储过程
2、写一个存储过程,此存储过程要做两件事:
⑴判断表的数据条数是否超过20,如果超过20才做下面的步骤。
⑵要保留最新的10条数据,删除其它的老数据。这个就需要表必须有一个递增的主键id,这样的话最新的数据id的值也就越大。只要找出当前表最大的id然后减10得到一个'删除节点',再在删除语句中的写 where id <'删除节点' 即可。这样虽然结果不一定准确,但可以大致实现效果。
假设现在有一个datas表,这张表中有一个主键id是递增的。这张表的数据会不断增加,现在要每隔5秒钟保留datas表的最新10条数据,其它的都删掉。
代码过程如下:
1.首先定义一个存储过程取名为pro_clear_data,注意竖线(“|”)一定不能丢
|
DELIMITER | DROP PROCEDURE IF EXISTS pro_clear_data | CREATE PROCEDURE pro_clear_data() BEGIN SET @datas_count=(SELECTCOUNT(id) FROM datas); IF(@datas_count>20) THEN SET @max_id=( SELECT MAX (id) FROM datas); SET @max_id = @max_id - 10; DELETE FROM `datas` WHERE id<@max_id; END IF ; END | |
2.创建定时器取名为event_time_clear_data
|
SET GLOBAL event_scheduler = 1; CREATE EVENT IF NOT EXISTS event_time_clear_data ON SCHEDULE EVERY 5 SECOND ON COMPLETION PRESERVE DO CALL pro_clear_data(); |
3.这个是最简单但是也是最重要的,我们要手动的启动这个定时器,要不然是没法工作的。
|
ALTER EVENT event_time_clear_data ON COMPLETION PRESERVE ENABLE; |
创建存储过程与创建定时器代码要分开执行
每隔5秒钟就会自动清空一次数据,保留最新的10条。
另外,关闭定时器的代码是:
|
ALTER EVENT event_time_clear_data ON COMPLETION PRESERVE DISABLE; |
删除存储过程的代码是:
|
DROP PROCEDURE pro_clear_data; |
关于Event:
mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。
删除Event:
|
DROP EVENT IF EXISTS event_time_clear_data1 |
到此这篇关于Mysql实现定时清空一张表的旧数据并保留几条数据的文章就介绍到这了,更多相关Mysql定时清空数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://www.cnblogs.com/doubleflower/p/14183637.html
- 软件测试常用mysql语句(MySQL压力测试工具Mysqlslap的使用)
- mysql中的默认mysql数据库作用(MySQL安装后默认自带数据库的作用详解)
- mpp数据库的客户端工具(xampp默认mysql数据库root密码的修改)
- mysql日常运维(MySQL从库维护经验分享)
- mysql触发器入门(MySQL中触发器和游标的介绍与使用)
- mysql读写分离怎么做(MySQL读写分离,写完读不到问题如何解决)
- mysql索引原理及调优(mysql高级学习之索引的优劣势及规则使用)
- mysql日期与时间函数(MySQL日期函数与时间函数汇总MySQL 5.X)
- mysqlmha架构图(MySQL之MHA高可用配置及故障切换实现详细部署步骤)
- mysql 查询语句group by用法(MySQL group by和order by如何一起使用)
- mysql分库分表视图(MySQL分库分表与分区的入门指南)
- mysql架构方案讲解(MySQL 搭建MHA架构部署的步骤)
- mysql的binlog日志详解(MySQL 有关MHA搭建与切换的几个错误log汇总)
- mysql按端口查找配置(MySQL中给定父行找到所有子行的解决方案)
- windowsmysql服务在哪里(解决windows service 2012阿里云服务器在搭建mysql时缺少msvcr100.dll文件的问题)
- 利用xampp搭建服务器(xampp集成环境怎样使用MySQL数据库)
- 文莱旅游攻略(文莱旅游攻略介绍)
- 马来西亚旅游攻略(马来西亚旅游攻略自由行攻略)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
- 《庆余年2》新消息,原班人马,肖战特别出演,这才是最好的安排(庆余年2新消息原班人马)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
热门推荐
- for循环能有两个变量吗(关于var在for循环遇到的问题解决)
- 如何调试部署在IIS上的网站
- python与气象(使用Python和Prometheus跟踪天气的使用方法)
- python 基于内容的推荐系统(不到40行代码用Python实现一个简单的推荐系统)
- laravel队列失败原理(Laravel第三方包报class not found的解决方法)
- uni-app搜索框源代码(如何用uni-app实现顶部导航栏显示按钮和搜索框)
- 常见伪静态规则(通过伪静态解决中文乱码问题)
- canvas图片显示报错(html2canvas生成的图片偏移不完整的解决方法)
- harborjob设置(harbor修改配置文件后重启操作)
- 腾讯云服务器操作系统怎么选(如何选择腾讯云服务器配置?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9