news 2026/6/25 20:03:20

【作业2】DELETE vs TRUNCATE 区别及大表删除影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【作业2】DELETE vs TRUNCATE 区别及大表删除影响

文章目录

    • 【作业2】DELETE vs TRUNCATE 区别及大表删除影响
      • 1. 二者的区别
      • 2. 大表删除表数据,对OS的影响?
        • 使用 DELETE 删除大表的影响:
        • 使用 TRUNCATE 删除大表的影响:
      • 3. 大表数据删除的最佳实践
        • 方案1:分批删除 (推荐)
        • 方案2:创建新表替换
        • 方案3:分区表删除
        • 方案4:优化TRUNCATE
      • 4. 预防措施和监控
        • 执行前检查:
        • 执行中监控:
        • OS层面监控:
      • 5. 特殊情况处理
        • 有外键约束的表:
        • InnoDB优化:
      • 总结对比表

【作业2】DELETE vs TRUNCATE 区别及大表删除影响


1. 二者的区别

特性DELETE FROM table;TRUNCATE table;
SQL 类型DML (数据操作语言)DDL (数据定义语言)
执行方式逐行删除,记录每一行的删除日志直接删除数据页,不记录行级日志
事务支持可回滚 (ROLLBACK)大部分情况下不可回滚 (MariaDB中部分版本支持事务性TRUNCATE)
触发器触发DELETE触发器不触发任何触发器
自增ID不重置自增计数器重置自增计数器为初始值
性能慢 (逐行操作)极快 (直接操作数据页)
锁机制行级锁 (InnoDB) 或 表级锁表级锁
空间释放不立即释放磁盘空间立即释放磁盘空间
WHERE子句支持条件删除不支持,只能全表清空
返回值返回删除的行数返回0 (表示成功)

2. 大表删除表数据,对OS的影响?

使用 DELETE 删除大表的影响:
影响点具体表现
事务日志暴增MariaDB会产生大量Undo/Redo日志,可能导致/var/lib/mysql空间耗尽
锁竞争长时间持有行锁/表锁,阻塞其他查询,可能导致"Waiting for table metadata lock"
CPU/内存高负载逐行删除需要解析、写入日志、更新索引,消耗大量CPU和内存
I/O 压力大大量读写操作:读取数据页→写入Undo日志→更新数据页→写入Redo日志
主从延迟二进制日志包含大量DELETE语句,从库需逐行执行,复制延迟严重
回滚灾难如果中途终止或回滚,回滚时间可能比删除时间更长
使用 TRUNCATE 删除大表的影响:
影响点具体表现
瞬间I/O峰值立即释放大量磁盘空间,文件系统需更新元数据,产生短暂I/O冲击
文件系统碎片释放大量不连续空间,可能导致磁盘碎片增加(对SSD影响较小)
缓存冲击Buffer Pool中的相关数据页立即失效,可能影响后续查询性能
磁盘空间释放延迟在InnoDB中,如果innodb_file_per_table=OFF,空间不会立即归还OS

3. 大表数据删除的最佳实践

方案1:分批删除 (推荐)
-- 使用LIMIT分批删除,减轻事务压力DELETEFROMlarge_tableWHEREconditionLIMIT1000;-- 循环执行,直到删除完成
方案2:创建新表替换
-- 1. 创建新表(保留需要的数据结构)CREATETABLEnew_tableLIKElarge_table;-- 2. 插入需要保留的数据INSERTINTOnew_tableSELECT*FROMlarge_tableWHEREkeep_condition;-- 3. 重命名表(快速切换)RENAMETABLElarge_tableTOold_table,new_tableTOlarge_table;-- 4. 稍后删除旧表DROPTABLEold_table;
方案3:分区表删除
-- 如果表已分区,直接删除分区ALTERTABLElarge_tableDROPPARTITIONp2023;-- 比删除数据快几个数量级
方案4:优化TRUNCATE
-- 1. 降低影响,在低峰期执行SETSESSIONlock_wait_timeout=300;SETSESSIONinnodb_lock_wait_timeout=300;-- 2. 使用TRUNCATETRUNCATETABLElarge_table;

4. 预防措施和监控

执行前检查:
-- 1. 评估表大小SELECTtable_nameAS`表名`,ROUND(((data_length+index_length)/1024/1024),2)AS`大小(MB)`FROMinformation_schema.tablesWHEREtable_schema='your_database'ANDtable_name='large_table';-- 2. 检查锁等待时间SHOWVARIABLESLIKE'innodb_lock_wait_timeout';SHOWVARIABLESLIKE'lock_wait_timeout';
执行中监控:
-- 监控删除进度SHOWPROCESSLIST;SHOWENGINEINNODBSTATUS\G-- 监控空间使用SELECTtable_schemaAS'数据库',table_nameAS'表名',ROUND(((data_length+index_length)/1024/1024),2)AS'当前大小(MB)'FROMinformation_schema.tablesORDERBY(data_length+index_length)DESC;
OS层面监控:
# 监控磁盘空间df-h /var/lib/mysql# 监控I/O压力iostat -x1# 监控内存和CPUtop-u mysqlhtop

5. 特殊情况处理

有外键约束的表:
-- 1. 禁用外键检查SETFOREIGN_KEY_CHECKS=0;-- 2. 执行删除TRUNCATETABLEparent_table;TRUNCATETABLEchild_table;-- 3. 重新启用SETFOREIGN_KEY_CHECKS=1;
InnoDB优化:
-- 调整Buffer Pool,减少刷盘频率SETGLOBALinnodb_flush_log_at_trx_commit=2;SETGLOBALsync_binlog=0;-- 执行删除操作-- ...-- 恢复设置SETGLOBALinnodb_flush_log_at_trx_commit=1;SETGLOBALsync_binlog=1;

总结对比表

场景推荐方法理由
小表清空TRUNCATE快速、干净
大表清空创建新表替换对业务影响最小
条件删除DELETE分批可控、可监控
分区表DROP PARTITION秒级完成
开发环境TRUNCATE快速重置
生产环境分批DELETE或新表替换稳定性优先
紧急清空TRUNCATE最快见效

核心建议:生产环境大表删除,优先考虑分批DELETE新表替换方案,避免使用一次性TRUNCATE或DELETE,除非在明确维护窗口且评估过风险。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 9:25:40

必收藏!未来5年程序员最优发展方向,认准AI大模型准没错

对于程序员而言,不夸张地说,未来5年最值得深耕、回报率最高的技术发展方向,毫无疑问是AI大模型!不管是刚入门的编程小白,还是深耕多年的资深开发者,抓住这波风口,就能实现职业跃迁,建…

作者头像 李华
网站建设 2026/6/16 11:34:03

参数log_statement 设置为ddl级别及以上存在密码泄露风险

文章目录 环境症状问题原因解决方案 环境 系统平台:N/A 版本:4.1.1 症状 log_statement参数,一般设置为ddl级别以上的选项,但是该方式存在风险,任何修改用户密码的操作都将被明文记录到日志中,建议在修改…

作者头像 李华
网站建设 2026/6/23 21:52:12

真心不骗你!专科生专属AI论文软件,千笔 VS 学术猹,效率翻倍!

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华
网站建设 2026/6/10 7:38:46

MPC模型预测控制的Simulink仿真模型(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

MPC模型预测控制的Simulink仿真模型(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码,被控对象为二阶大延迟控制系统。采用m脚本编写模型预测控制算法。包含A星算法,Djkstra算法,LQR&#xff…

作者头像 李华
网站建设 2026/6/5 10:05:05

采用死区补偿算法的PMSM双闭环矢量控制仿真(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

采用死区补偿算法的PMSM双闭环矢量控制仿真(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码参考文献: 《基于死区补偿的永磁同步电动机矢量控制系统研。究王文韬》 《矢量控制电动执行器死区补偿新方法_张冀》 《一种新颖的电压…

作者头像 李华
网站建设 2026/6/21 4:11:35

样板快一倍!揭秘嘉立创64层 PCB板 与HDI工艺

嘉立创深耕PCB打样已有20年,积累了丰富的行业经验。2025年,该公司正式推出64层超高层和HDI制造服务,步入PCB高端制造领域。相比传统工厂,依托数字化智造优势,嘉立创超高层实现“交期快1倍、成本低50%”的显著优势&…

作者头像 李华