mysql利用存储过程删除数据库历史的过期数据
最近遇到老板一个任务,要求我删除我们生产数据库产生的流水表的历史的数据,总共大约有2千万条数据。由于流水表正在使用,如果直接删除2千万条这么多的数据会造成卡死,甚至锁表,影响业务。我也考虑过新建一个表,把要保留的数据导入新表,然后再删除旧表,但是由于这个表正在使用,所以这个方案不太合适。后来就查找资料,想到用存储过程的方式,创建一个存储过程,每次删除1万条数据,每次删除都sleep 5秒的时间,这样数据库不会有太大的压力,不会造成锁表。
我决定采用存储过程的方式去删除,在mysql命令行执行,过程如下:
delimiter $$
DROP PROCEDURE IF EXISTS proc_batch_delete;
CREATE PROCEDURE proc_batch_delete()
BEGINDECLARE tcount BIGINT;#这步骤是将要删除的历史数据行数保存在变量tcount中SELECT COUNT(0) INTO tcount FROM t_test WHERE 'Date' <= '20211231';SELECT tcountWHILE tcount>0 DO#每次删1万条DELETE FROM t_test WHERE 'Date' <= '20211231' LIMIT 10000;#每次删完tcount减去10000SET tcount=tcount-10000commit;#为防止锁表,睡眠5秒SELECT sleep(5);SELECT tcount;END WHILE;
END $$
delimiter ;
#调用存储过程
CALL proc_batch_delete;
这样写,每次删完都会输出还剩多少行,比较直观清楚
mysql利用存储过程删除数据库历史的过期数据相关推荐
- mysql利用触发器删除数据库_[数据库]mysql 触发器的创建 修改 删除
[数据库]mysql 触发器的创建 修改 删除 0 2015-12-16 23:00:04 //做一个简单的练习,创建一个简单的触发器 完成添加文章的时候,自动加上时间,默认作者 为 '日记本的回忆' ...
- mysql利用binlog删除数据库_MySQL数据库之mysql手动删除BINLOG的方法
本文主要向大家介绍了MySQL数据库之mysql手动删除BINLOG的方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 在MySQL中执行以下命令: 复制代码 代码如下: P ...
- MySQL利用存储过程清除所有表中的所有记录
MySQL利用存储过程清除所有表中的所有记录 在使用MySQL过程中,难免会出现一些测试数据,然而这些测试数据在真正部署运行的时候,通常要被清楚掉,并且自增长的字段要回复初始值.如何高效快速的实现以上 ...
- MySQL利用存储过程自动生成千万条数据
文章目录 前言 一.实现思路 二.实现步骤 1.创建数据库 2.创建存储表和内存表 3.创建所需函数 4.创建存储过程 5.调用存储过程插入数据 6.统计数据库 拓展 总结 前 ...
- mysql 5.7 删除数据库_MySQL5.7(二)数据库的基本操作
登录MySQL数据库 格式:mysql -u 用户名 -h 主机名或IP地址 -P 端口号 -p 密码 1.显示数据库 SHOW DATABASES; MySQL5.7.20默认数据库 inform ...
- mysql 按日期删除数据库_DAY11 - MySQL入门(数据库的增、删、改、查 基本操作)...
一. 数据库的介绍 二. MySQL的基本语法 l 注释: 单行注释: #注释内容 单行注释: -- 注释内容(注意,两个"--"之后有一个空格) 多行注释: /*注释内容*/ l ...
- mysql 1010 rmdir_mysql删除数据库1010
mysql无法删除数据库:ERROR 1010 (HY000): Error dropping database(can't rmdir './hive/') 应用场景 搭建hadoop环境的时候,安 ...
- mysql使用游标删除数据库_mysql 使用游标进行删除操作的存储过程
BEGIN DECLARE hprocessInstanceId bigint DEFAULT 0; -- 历史流程实例id DECLARE hprocessInstanceIdStarttime ...
- mysql根据id删除数据库,MYSQL删除表中的指定ID数据
MYSQL删除表中的指定ID数据 删除A表中的ID 中的开头以B* 的数据库. 复制代码 代码如下: delete FROM A WHERE id like 'B%' 单独删除 A 表中的ID B 复 ...
最新文章
- 使用Nagios监控网页
- UpdatePanel控件的简单属性学习
- php预处理查询数据库,php+mysqli使用预处理技术进行数据库查询的方法
- 怎么让程序后台运行_CPU中的程序是怎么运行起来的?
- FTP服务器的搭建与安全配置
- NLP应该如何学、如何教?斯坦福大学大牛Dan Jurafsky教授专访
- mysql 传送时间_vue处理mysql数据库中的时间数据(datetime)
- 计算机专业中最受热议的4个专业,2018考研后身价倍增的4个专业盘点
- otsu算法_【车牌识别算法】
- NetWare 5.1 Does Not Recognize CD-ROM Drive
- 将截断字符串或二进制数据 语句已终止
- DL加速器与GPU的不同,一个用于推理,一个用于训练。
- java inner class_Java Inner Class 内部类
- 前端越早入行越吃香!【全新web前端开发视频教程】
- redis/memcached可视化客户端工具TreeNMS
- linux安全加固项目
- 测试自行车速度的软件,自行车速度测试
- 微信支付之微信公众号网页支付(各种总结)
- Java版数据结构之数组模拟环形队列demo
- 2021年5月信息系统项目管理师真题基础知识1~32题