【SQL】百万级别以上的数据如何删除

在MySQL中删除百万级别以上的数据时,需要考虑性能和资源消耗。以下是几种有效的策略:

1. 分批删除 (Batch Deletion)

逐步删除大批量数据,以避免长时间锁定表和阻塞其他操作。

-- 使用循环来分批删除
SET @batch_size = 10000;  -- 每次删除的行数
SET @total_deleted = 0;DOSET @deleted = (DELETE FROM your_table WHERE 条件 LIMIT @batch_size);SET @total_deleted = @total_deleted + @deleted;
WHILE @deleted > 0;
END DO;-- 输出总共删除的行数
SELECT @total_deleted;

2. 使用索引 (Use Index)

确保删除条件上的列有索引,以加速删除操作。

CREATE INDEX idx_your_column ON your_table (your_column);
DELETE FROM your_table WHERE your_column = 'some_value';

3. 禁用外键约束 (Disable Foreign Key Constraints)

如果表上有外键约束,删除数据前可以临时禁用外键检查,以加快删除速度。

-- 禁用外键检查
SET foreign_key_checks = 0;-- 删除操作
DELETE FROM your_table WHERE 条件;-- 启用外键检查
SET foreign_key_checks = 1;

4. 临时表 (Use Temporary Tables)

将要保留的数据复制到一个新的临时表,然后删除原表,重命名临时表。

-- 创建临时表
CREATE TABLE temp_table AS SELECT * FROM your_table WHERE 保留条件;-- 删除原表
DROP TABLE your_table;-- 重命名临时表
ALTER TABLE temp_table RENAME TO your_table;

5. 使用 pt-archiver 工具

pt-archiver 是 Percona Toolkit 提供的一个工具,可以用于高效地归档和删除大规模数据。

pt-archiver --source h=host,D=database,t=your_table --where '条件' --purge --limit 1000 --commit-each

6. 设置合适的日志配置

对于大规模删除操作,可以临时调整日志配置,以避免大量写入日志导致性能问题。

SET GLOBAL innodb_log_file_size = 512M;  -- 调整 InnoDB 日志文件大小
SET GLOBAL innodb_buffer_pool_size = 2G; -- 调整 InnoDB 缓冲池大小

选择合适的方法可以根据具体情况和需求决定,如是否有外键约束、数据删除的条件复杂性等。在执行大规模删除操作时,请确保做好数据备份和测试。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux服务器配置Python+PyTorch+CUDA深度学习环境

参考博主 Linux服务器配置PythonPyTorchCUDA深度学习环境_linux cuda环境配置-CSDN博客 https://blog.csdn.net/NSJim/article/details/115386936?ops_request_misc&request_id&biz_id102&utm_termlinux%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E6%8C%89pytorch%20…

【ffmpeg命令基础】流复制

文章目录 前言为什么需要流复制流复制的示意图流复制的例子总结 前言 在视频处理领域,FFmpeg 是一个功能强大且广泛使用的工具。它可以处理几乎所有类型的多媒体文件,并支持多种操作,如转码、剪辑、合并等。本文将介绍 FFmpeg 中的一个重要功…

20. Python读取.mat格式文件通用函数

1. 前言 在科研和工程领域,MATLAB的.mat文件是一种常见的数据存储格式,用于保存复杂的数组和结构体。Python作为一种强大的编程语言,提供了多种库来读取和处理.mat文件。本文将介绍一个通用的Python函数,用于读取.mat格式文件,并将其内容转换为Python数据结构,以便进一步…

4核16G服务器支持多少人?4C16G服务器性能测评

租赁4核16G服务器费用,目前4核16G服务器10M带宽配置70元1个月、210元3个月,那么能如何呢?配置为ECS经济型e实例4核16G、按固定带宽10Mbs、100GB ESSD Entry系统盘。 那么问题来了,4C16G10M带宽的云服务器可以支持多少人同时在线&…

【Oracle】Oracle中的merge into

目录 解释使用场景语法示例案例一案例二 MERGE INTO的优缺点优点:缺点: 注意事项附:Oracle中的MERGE INTO实现的效果,如果改为用MySQL应该怎么实现注意 解释 在Oracle数据库中,MERGE INTO是一种用于对表进行合并&…

C++ ───List的使用

目录 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list的迭代器失效 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&…

2024年汉字小达人比赛区级活动学校选拔的题型预测和真题示例

上一篇文章,好真题网为大家介绍了2024年上海市小学生汉字小达人比赛活动的轮次、举办日期、参赛对象、报名方式、费用和如何备考的建议等。 有家长朋友问汉字小达人考试的内容和范围是什么,有哪些题型,以及汉字小达人比赛和上海市小学生古诗…

PDF压缩软件电脑版 电脑pdf压缩怎么压缩文件

在数字化时代,pdf文件因其良好的兼容性和稳定性,已成为工作与生活中不可或缺的文件格式。然而,随着内容的增多,pdf文件的体积也随之增大,给文件的传输和存储带来了一定的困扰。本文将为你详细介绍如何在电脑上压缩pdf文…

关于Redis的最常见的十道面试题

面试题一:Redis为什么执行这么快? Redis运行比较快主要原因有以下几种: 纯内存操作:Redis将所有数据存储在内存中,这意味着对数据的读写操作直接在内存中运行,而内存的访问速度远远高于磁盘。这种设计使得…

【18】Android 线程间通信(三) - Handler

概述 接下来我们会从native层来分析一下,Handler做了什么,以及之前提到过的应用层的两个native的调用链。 nativeWake 最早接触这个方法还记得是什么时候吗?MessageQueue#enqueueMessage中,在这个方法的末尾,我们看…

LNMP架构部署及应用

部署LNMP架构流程 1.安装Nginx(上传软件包,执行脚本) yum -y install pcre-devel zlib-devel gcc gcc useradd -M -s /sbin/nologin nginx tar zxf nginx-1.12.0.tar.gz cd nginx-1.12.0 ./configure --prefix/usr/local/nginx --usernginx…

python原型链污染

python原型链污染 ​ 后面会有跟着Article_kelp慢慢操作的,前面先面向题目学习。 背景: ​ 国赛遇到了这个考点,然后之后的DASCTF夏季挑战赛也碰到了,抓紧粗略学一手,学了JavaScript之后再深究原型链污染。 简介&a…

传输层和网络层的关系,ip协议+ip地址+ip报头字段介绍(4位TOP字段,8位生存时间(ttl)),ip地址和端口号的作用

目录 传输层和网络层的关系 引入 介绍 ip协议 介绍 ip地址 引入 数据传递过程 举例(ip地址的作用) ip报头 格式 4位版本号 ip地址不足的问题 8位服务类型 4位TOP(type of service)字段 最小延时 最大吞吐量 4位首部长度 16位总长度 8位协议号 首部校验和…

《样式设计001:表单的2种提交方式》

描述:在开发小程序过程中,发现一些不错的案例,平时使用也比较多,稍微总结了下经验,以下内容可以直接复制使用,希望对大家有所帮助,废话不多说直接上干货! 一:表单的2种…

【强化学习的数学原理】课程笔记--4(随机近似与随机梯度下降,时序差分方法)

目录 随机近似与随机梯度下降Mean estimationRobbins-Monro 算法用 Robbins-Monro 算法解释 Mean estimation用 Robbins-Monro 算法解释 Batch Gradient descent用 SGD 解释 Mean estimation SGD 的一个有趣的性质 时序差分方法Sarsa 算法一个例子 Expected Sarsa 算法n-step S…

电容认识和特点总结

图片 常见的电容名字及特点 名字特点容量和耐压独石电容MLCCMulti layer Ceramic Capacitors (多层陶瓷电容) 常见的贴片电容&#xff0c;容量大于瓷片电容0.5pF~100uF,耐压<100V瓷片/陶瓷电容耐压远高于独石电容,容量小<0.1uf&#xff0c;用于晶振旁路电容滤波铝电解电…

PY32F002B单片机 ISP 串口下载注意事项

一、PY32F002B ISP 串口下载的连接方式 仿真上的 VCC 和 GND 连接到 MCU 的 VCC 和 VSS&#xff0c; 仿真的 TX 接 MCU 的 RX&#xff0c;RX 接 MCU 的 TX。 二、因为 PY32F002B 没有 BOOT&#xff0c;需要用 ISP 串口下载的话需要下载串口引导程序。 下载这个目录下的 IAP…

Python酷库之旅-第三方库Pandas(036)

目录 一、用法精讲 111、pandas.Series.item方法 111-1、语法 111-2、参数 111-3、功能 111-4、返回值 111-5、说明 111-6、用法 111-6-1、数据准备 111-6-2、代码示例 111-6-3、结果输出 112、pandas.Series.xs方法 112-1、语法 112-2、参数 112-3、功能 112-…

几种常用排序算法

1 基本概念 排序是处理数据的一种最常见的操作&#xff0c;所谓排序就是将数据按某字段规律排列&#xff0c;所谓的字段就是数据节点的其中一个属性。比如一个班级的学生&#xff0c;其字段就有学号、姓名、班级、分数等等&#xff0c;我们既可以针对学号排序&#xff0c;也可…

OpenGL-ES 学习(7) ---- VBO EBO 和 VAO

目录 VBO(Vertex Buffer Object)EBO(Element Buffer Object)VAO(Vertex Array Object) VBO(Vertex Buffer Object) EBO(Element Buffer Object) VBO(Vertex Buffer Object) 实际是指顶点缓冲器对象 在 opengl-es 2.0 的编程中&#xff0c;用于绘制图元的顶点数据是从 CPU 传…