news 2026/4/26 18:42:54

软删除的好处

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软删除的好处

1.问题

比如关注表,当关注时插入一行,取观时只是将delete列设置为1,并没有把这一行删除,为什么要这么做?为什么要update,而不是delete?为什么使用了软删除(逻辑删除),而不是硬删除(物理删除)?

2.原因

  1. 有可能取关后又再关注,会导致频繁插入删除;
  2. 大量delete可能会有性能问题,会产生undo log,delete存储的是本行所有列的数据,log文件会更大;产生索引碎片。

2.1 对索引的影响

DELETE一行 不会立刻重建主键索引,但会 造成 B+Tree 的“空洞 / 碎片”,长期大量 DELETE → 主键索引效率下降。

在 InnoDB 中:主键索引 = 聚簇索引,数据行本身就存放在 B+Tree 的叶子节点里

也就是说:

删一行 ≈ 从主键 B+Tree 里“挖掉一个叶子记录”

长期后会变成:

同样数量的有效数据
需要扫描更多的索引页

update操作的是非索引字段,没有这方面的影响。

2.2 索引重建时机

只有这些情况:

  • OPTIMIZE TABLE

  • ALTER TABLE ... ENGINE=InnoDB

  • ALTER TABLE重建

  • 导出再导入

这些操作:

  • 会重建聚簇索引

  • 会锁表 / 占资源

  • 不可能频繁在线执行

👉 所以线上系统靠设计避免 DELETE,而不是事后 OPTIMIZE。

2.3 undo log撤销日志

Undo log 的核心作用只有两个:

1️⃣支持事务回滚(Rollback)
2️⃣支持 MVCC,让读不被写阻塞

它本质上是:
👉“把你这次修改之前的旧数据存下来”

对不同操作,undo log 内容不同:

✅ INSERT

  • undo log 记录:“这行需要被删掉”

✅ DELETE

  • undo log 记录:“这行原本长什么样”

  • 回滚时:恢复整行

✅ UPDATE

  • undo log 记录:被修改字段的旧值

  • 回滚时:改回去

⚠️ 注意重点:

UPDATE deleted=1 只记录 deleted 的旧值(0)

同时,undo log能避免脏读,一个事务未提交之前,另一个线程看不到它的修改。

undo log清理:

✅ 1. 事务已经提交 / 回滚

✅ 2.没有任何事务还需要这个旧版本

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

YOLOv11目标检测模型在PyTorch-CUDA环境中的训练优化

YOLOv11目标检测模型在PyTorch-CUDA环境中的训练优化 在自动驾驶感知系统调试过程中,一个常见的痛点浮出水面:团队成员在本地训练YOLO模型时,总遇到“显卡不识别”“CUDA版本冲突”“训练到一半显存爆炸”等问题。更糟的是,同一份…

作者头像 李华
网站建设 2026/4/22 7:20:41

SSH方式登录PyTorch-CUDA-v2.7镜像进行远程模型调试技巧

SSH方式登录PyTorch-CUDA-v2.7镜像进行远程模型调试技巧 在深度学习项目日益复杂的今天,很多开发者都遇到过这样的场景:本地笔记本跑不动大模型,只能把代码传到远程GPU服务器上训练。但一用Jupyter Notebook就发现,长时间训练任务…

作者头像 李华
网站建设 2026/4/20 14:32:37

VMware Workstation 12 终极指南:高效虚拟化解决方案

还在为多系统测试而烦恼吗?VMware Workstation 12 中文版为你提供完美的桌面虚拟化体验!这款业界知名的虚拟机软件让你在一台电脑上轻松运行 Windows、Linux、DOS 等多个操作系统,无论是开发测试还是学习实验都能得心应手 ✨ 【免费下载链接】…

作者头像 李华
网站建设 2026/4/23 15:58:20

好写作AI:回复评审意见?用它精准分析要点,起草高水平答复函

收到评审意见时,是心跳加速还是头脑发懵?让AI成为你的“学术沟通顾问”,从容应对。当论文审稿意见返回时,那一封邮件常常让人既期待又恐惧。面对密密麻麻、有时甚至措辞严厉的修改建议,许多作者的第一反应是&#xff1…

作者头像 李华
网站建设 2026/4/21 19:18:03

算法面试突破指南:从剑指Offer到面试高手的实战宝典

你是否在算法面试中频频受挫?面对复杂问题时大脑一片空白?别担心,这篇文章将为你揭开算法面试的神秘面纱,带你从零开始构建坚实的算法基础。无论你是准备校招还是社招,这套方法都能帮助你在激烈的技术面试中脱颖而出。…

作者头像 李华
网站建设 2026/4/20 14:32:32

《你真的了解C++吗》No.015:constexpr 的进击——编译期计算的极限

《你真的了解C吗》No.015:constexpr 的进击——编译期计算的极限 导言:偷走运行时间的人 在传统的 C 认知中,程序被分为明显的两个阶段:编译期(处理类型、分配布局)和运行期(执行逻辑、计算数值…

作者头像 李华