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
- mysqlset用法(mysql descDESCRIBE命令实例讲解)
- mysql查询条件的优化(MySQL查询优化之查询慢原因和解决技巧)
- mysql 死锁查询(MySQL slave 延迟一列 外键检查和自增加锁)
- mysql流式查询(MySQL全面瓦解之查询的正则匹配详解)
- mysql索引的类型和方法(MySQL覆盖索引的使用示例)
- phpstudy的mysql无法启动(Windows系统下解决PhPStudy MySQL启动失败问题)
- docker安装mysql后无法连接(Docker 安装 MySQL 并实现远程连接教程)
- mysql多行数据之和(详解MySQL的数据行和行溢出机制)
- mysql的count知识(MySQL中MTR的概念)
- mac版本php环境搭建(在Mac OS X中配置Apache+PHP+MySQL运行环境的详细步骤)
- mysql 死锁产生的原因和必要条件(Mysql查看死锁与解除死锁的深入讲解)
- mysql主从复制忽略问题(MySQL复制问题的三个参数分析)
- 了解mysql数据自动备份(MySQL数据备份方法的选择与思考)
- mysql怎样建立索引(MySQL创建索引需要了解的)
- mysql面试题及答案100题(几个MySQL高频面试题的解答)
- mysql8.0中如何导入数据(mysql8.0.20数据目录迁移的方法)
- 每天1万吨牛奶倒进下水道,美国大萧条一幕重现(每天1万吨牛奶倒进下水道)
- 如何看待美国数十万加仑牛奶倒下水道 历史又重演了(如何看待美国数十万加仑牛奶倒下水道)
- 历史惊人的相似,美国80万加仑牛奶倒入下水道,意味着什么(历史惊人的相似)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
- 美国数十万加仑牛奶倒入下水道,贫民区食不果腹,历史再次重演(美国数十万加仑牛奶倒入下水道)
- 美国倒掉数十万加仑牛奶 上热搜第一,这一幕似曾相识(美国倒掉数十万加仑牛奶)
热门推荐
- php redis应用场景(PHP商品秒杀问题解决方案实例详解mysql与redis)
- mysql 高效分页(MySQL 分页查询的优化技巧)
- zabbix怎么监控数据库(使用zabbix监控oracle表空间的操作流程)
- html5支持video的视频格式(解决html5中的video标签ios系统中无法播放使用的问题)
- docker启动k8s(k3d入门指南之在Docker中运行K3s的详细教程)
- for循环能有两个变量吗(关于var在for循环遇到的问题解决)
- django连接web实现登录功能(解决django前后端分离csrf验证的问题)
- vue自定义列组件(vue自定义表格列的实现过程记录)
- 注册会员信息管理(如何验证会员系统中用户的邮箱是否真实存在)
- extjs column列布局
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9