java生产环境问题-mysql写存储过程定时删除大数据量表

问题:生产环境流水表已经达到4000w条数据,不管是查询还是统计都受到了一定程度的影响。所以创建了分表,按照每个月进行存储。但是主表的数据还是很多,所以想到定时删除。

注意:生产环境之前的配置不算高,所以执行的时候会出现cup飙升的情况。现在做了一次升配,目前是32核的CPU。执行的时候需要实时观察mysql所在服务器的cpu情况,如果持续飙升到100以上,就立马停止掉。这个方法不适用你的服务器。

 怎么查看cpu?

直接在服务器输入top-回车

然后ctrl+c退出

用代码或者存储过程实现都可以。这篇文章就看一下存储过程怎么使用。

逻辑就是:根据表中的时间字段in_time排序,每隔30s删除最早的1000条数据,同时,最近三个月的数据不做删除。还要可以随时停止。

先看下整体代码:

DELIMITER //

-- 创建一个表来存储停止标志
CREATE TABLE IF NOT EXISTS deletion_control (
    stopFlag INT DEFAULT 0
)//

-- 插入一行,初始时将 stopFlag 设置为 0
INSERT INTO deletion_control (stopFlag) VALUES (0)//

CREATE PROCEDURE StopDeletion()
BEGIN
    -- 将停止标志设置为 1
    UPDATE deletion_control SET stopFlag = 1;
END //

CREATE PROCEDURE DeleteOldestCarFlow()
BEGIN
    DECLARE stopFlagValue INT;

    -- 获取停止标志的值
    SELECT stopFlag INTO stopFlagValue FROM deletion_control;

    -- 当停止标志未设置时执行删除操作
    WHILE stopFlagValue = 0 DO
        -- 删除根据 in_time 排序后最早的 100 条数据,并且最近三个月内的数据不删除
        DELETE FROM car_flow
        WHERE in_time <= NOW() - INTERVAL 3 MONTH
        ORDER BY in_time
        LIMIT 100;

        -- 休眠30秒
        DO SLEEP(30);

        -- 重新获取停止标志的值
        SELECT stopFlag INTO stopFlagValue FROM deletion_control;
    END WHILE;
END //

DELIMITER ;

先创建一个表deletion_control 主要用来存放开启还是停止的标识 ,并初始化为0-代表开启

然后创建了一个停止的存储过程StopDeletion(),主要就是把开关表变成1-停止

这个看自己需求,可以直接更改表中的值,就不用这个存储过程了

最后就是主过程DeleteOldestCarFlow()。首先判断表中的数据是0还是1,如果是0继续执行循环。然后开始删除数据,接着休眠30s,最后再查询一遍开关表中的数据是0还是1,直到为1就结束循环。

具体在navicat中是这样的。

可以点击直接执行和停止:

也可以通过这个来停止:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258384.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙-arkTs:访问控制授权申请

module.json5文件中 requestPermissions 进行配置&#xff08;值为数组&#xff0c;可配置多个&#xff09; ohos.permission.INTERNET {"name": "ohos.permission.INTERNET" }

算法训练营Day19

#Java #二叉树 #双指针 开源学习资料 Feeling and experiences&#xff1a; 二叉搜索树的最小绝对差&#xff1a;力扣题目链接 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的…

年终数据分析报告这么写,领导超满意

年终总结是每年都要进行的重要工作&#xff0c;不仅是对过去一年的工作进行回顾&#xff0c;也是为了更好地准备和规划未来&#xff0c;值得我们投入更多的时间和精力。而无论是今年的成果还是明年的计划&#xff0c;为了避免假大空&#xff0c;都要基于事实&#xff0c;多用数…

基于SSM框架的个人通讯录系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本个人通讯录就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

【从零开始学习--设计模式--策略模式】

返回首页 前言 感谢各位同学的关注与支持&#xff0c;我会一直更新此专题&#xff0c;竭尽所能整理出更为详细的内容分享给大家&#xff0c;但碍于时间及精力有限&#xff0c;代码分享较少&#xff0c;后续会把所有代码示例整理到github&#xff0c;敬请期待。 此章节介绍策…

配网故障预警与定位装置:减少损失,加速恢复供电

亲爱的朋友们&#xff0c;你们知道吗&#xff1f;现在有一种神奇的装置&#xff0c;可以在配网出现故障时&#xff0c;快速定位并解决问题&#xff0c;减少损失&#xff0c;加速恢复供电&#xff01;这个装置就是恒峰智慧设计的——配网行波型故障预警与定位系统HFP-GZS1000&am…

Docker的安装及使用

目录 安装Docker 安装yum工具 更新本地镜像源 安装docker 启动docker 关闭防火墙 docker启动命令 配置镜像加速 docker的使用 拉取nginx 查看本地镜像 把镜像文件nginx导出成tar文件 查看是否导出成功 ​编辑 删除本地镜像nginx:latest 导入镜像文件nginx 拉取…

共享中药房新突破:亿发打造专业调度与强兼容性的智慧煎药平台

随着共享中药房、智能煎药中心等中医药信息化业务的蓬勃发展&#xff0c;越来越多的医疗机构开始引入自动化设备&#xff0c;将其应用到实际的生产环节中&#xff0c;以辅助或部分替代传统的人工操作。这种自动化设备需要通过智能配方煎药管理系统作为系统平台来进行对接和集成…

Django(一)

1.web框架底层 1.1 网络通信 注意&#xff1a;局域网 个人一般写程序&#xff0c;想要让别人访问&#xff1a;阿里云、腾讯云。 去云平台租服务器&#xff08;含公网IP&#xff09;程序放在云服务器 先以局域网为例 我的电脑【服务端】 import socket# 1.监听本机的IP和…

Swagger2之SpringBoot集成使用

前言&#xff1a; 我们对于Mybatis-Plus的分享较多&#xff0c;都是接触的一些数据库相关的知识&#xff0c;今天给大家带来的是Swagger2 Swagger2 1.介绍&#xff1a; Swagger2是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化Restful风格的web服务&#xff…

(自适应手机版)全屏滚动装修装潢公司网站模板

(自适应手机版)全屏滚动装修装潢公司网站模板 PbootCMS内核开发的网站模板&#xff0c;该模板适用于装修公司网站、装潢公司网站类等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b; 自适应手机版&#xff0c;同一个后台&a…

关于MQ,你了解多少?(干货分享之一)

导语 本文梳理笔者 MQ 知识&#xff0c;从消息中间件的基础知识讲起&#xff0c;在有了基础知识后&#xff0c;对市面上各主流的消息中间件进行详细的解析&#xff0c;包括 RabbitMQ、RocketMQ、Kafka、Pulsar&#xff0c;最后再横向对比这几款主流的消息中间件。 消息中间件…

Nodejs 第二十八章(邮件服务)

邮件服务在我们工作中邮件服务充当着一个重要的角色 任务分配与跟踪&#xff1a;邮件服务可以用于分配任务、指派工作和跟踪项目进展。通过邮件&#xff0c;可以发送任务清单、工作说明和进度更新&#xff0c;确保团队成员了解其责任和任务要求&#xff0c;并监控工作的完成情况…

C# Onnx Yolov8 Detect 物体检测 多张图片同时推理

目录 效果 模型信息 项目 代码 下载 C# Onnx Yolov8 Detect 物体检测 多张图片同时推理 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-12-18T11:47:29.332397 description&#xff1a;Ultralytics YOLOv8n-detect model trained on …

jeecg如果修改BasicForm提交按钮文字

可以通过 submitButtonOptions 属性来设置&#xff0c;代码如下 <BasicForm :schemas"mySchema" :submitButtonOptions"{ text: 保存 }" />欢迎关注微信公众号&#xff1a;文本魔术&#xff0c;了解更多

在统信UOS操作系统1060上如何部署DNS服务器?01

原文链接&#xff1a;在统信UOS操作系统1060上如何部署DNS服务器&#xff1f;01 hello&#xff0c;大家好啊&#xff01;今天我要给大家带来的是在统信UOS操作系统1060上部署DNS服务器系列的第一篇文章。在这个系列中&#xff0c;我们将一步步搭建一个完整的DNS服务器环境。而今…

npm安装依赖报错ERESOLVE unable to resolve dependency tree(我是在taro项目中)(node、npm 版本问题)

换了电脑之后新电脑安装包出错 &#x1f447;&#x1f447;&#x1f447; npm install 安装包报错 ERESOLVE unable to resolve dependency tree 百度后尝试使用 npm install --force 还是报错 参考 有人说是 node 版本和 npm 版本的问题 参考 新电脑 node版本&#xff1a;16.1…

MyBatis 运行原理

MyBatis框架在操作数据库时&#xff0c;大体经过了8个步骤&#xff1a; 1.读取 MyBatis 配置文件&#xff1a;mybatis-config.xml 为 MyBatis 的全局配置文件&#xff0c;配置了 MyBatis 的运行环境等信息&#xff0c;例如数据库连接信息。 2.加载映射文件&#xff1a;映射文…

服务器解析漏洞是什么?攻击检测及修复

服务器解析漏洞&#xff08;Server-side Include Vulnerability&#xff0c;SSI漏洞&#xff09;是一种安全漏洞&#xff0c;通常出现在支持服务器端包含&#xff08;SSI&#xff09;功能的Web服务器上。SSI是一种在Web页面中嵌入动态内容的技术&#xff0c;允许开发人员将外部…

Word的兼容性问题很常见,禁用兼容模式虽步不是最有效的,但可以解决兼容性问题

当你在较新版本的Word应用程序中打开用较旧版本的Word创建的文档时&#xff0c;会出现兼容性问题。错误通常发生在文件名附近&#xff08;兼容模式&#xff09;。兼容性模式问题&#xff08;暂时&#xff09;禁用Word功能&#xff0c;从而限制使用较新版本Word的用户编辑文档。…