news 2026/4/18 17:59:05

软删除的好处

作者头像

张小明

前端开发工程师

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/18 17:22:15

终极指南:Proteus仿真STM32资源文件一站式解决方案

终极指南:Proteus仿真STM32资源文件一站式解决方案 【免费下载链接】完美解决Proteus仿真STM32资源文件 完美解决Proteus仿真STM32资源文件 项目地址: https://gitcode.com/Open-source-documentation-tutorial/2dd52 在嵌入式系统开发领域,Prote…

作者头像 李华
网站建设 2026/4/16 22:05:16

Source Han Sans SC Woff2字体资源完整下载与使用指南

Source Han Sans SC Woff2字体资源完整下载与使用指南 【免费下载链接】SourceHanSansSCWoff2字体资源下载介绍 Source Han Sans SC Woff2 字体资源库,提供由Adobe与谷歌联合开发的高质量中文字体。该字体专为中文、日文和韩文设计,包含多种字重&#xf…

作者头像 李华
网站建设 2026/4/18 16:33:51

如何快速掌握Ruoyi-Vue-Pro:面向开发者的完整实战指南

如何快速掌握Ruoyi-Vue-Pro:面向开发者的完整实战指南 【免费下载链接】ruoyi-vue-pro 🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 微信…

作者头像 李华
网站建设 2026/3/27 17:44:19

Spring Boot in Action英文版电子书:从入门到精通的终极指南

Spring Boot in Action英文版电子书:从入门到精通的终极指南 【免费下载链接】SpringBootinAction英文版电子书下载 《Spring Boot in Action》是一本深入浅出地介绍Spring Boot开发技术的英文版电子书,适合希望快速掌握Spring Boot核心概念和最佳实践的…

作者头像 李华
网站建设 2026/4/17 8:23:07

实战指南:构建智能化多摄像头物体追踪系统

实战指南:构建智能化多摄像头物体追踪系统 【免费下载链接】Multi-Camera-Live-Object-Tracking Multi-Camera-Live-Object-Tracking: 该项目是一个多摄像头实时目标检测和跟踪系统,使用深度学习和计算机视觉技术,能够对视频中的物体进行检测…

作者头像 李华
网站建设 2026/4/17 22:43:40

7.1 完整项目实战!从0到1构建AI原生Web应用(附完整源码)

7.1 案例一:从0到1构建AI原生Web应用(完整项目实战) 引言 本文将通过一个完整的实战案例,展示如何使用AI原生开发工作流从0到1构建一个Web应用。我们将构建一个任务管理应用,涵盖需求分析、规范编写、代码生成、测试、部署等完整流程。 项目概述 项目目标 构建一个任…

作者头像 李华