什么是数据库的逻辑删除?数据库的物理删除和逻辑删除有什么区别?

news/2024/12/15 20:16:29/文章来源:https://www.cnblogs.com/eiffelzero/p/18608645

数据库的逻辑删除

逻辑删除是指通过标记的方式将数据标记为删除状态,而不直接从数据库中删除该数据。这通常通过在表中增加一个“删除标志”字段(例如 is_deleted 或 status)来实现。逻辑删除的数据通常在业务逻辑中被忽略,但在数据库中仍然存在。

逻辑删除的特点

  • 保留数据:数据并未被物理删除,而是被标记为已删除。例如,字段 is_deleted = 1 表示数据已被删除。
  • 数据恢复:由于数据没有被完全删除,可以通过更新标记字段的方式恢复数据。
  • 审计跟踪:逻辑删除可以保留历史数据,方便进行数据审计和追踪。
  • 查询复杂性:每次查询时,需要在查询条件中排除已逻辑删除的数据,例如 WHERE is_deleted = 0。

逻辑删除的例子

假设有一个 users 表,结构如下:

CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100),is_deleted BOOLEAN DEFAULT 0
);

当我们进行逻辑删除时,只需要执行:

UPDATE users SET is_deleted = 1 WHERE id = 1;

然后在查询时排除删除的数据:

SELECT * FROM users WHERE is_deleted = 0;

数据库的物理删除

物理删除是指直接从数据库中删除数据行。物理删除会永久删除数据,无法恢复。执行物理删除时,数据会从存储中消失,不再占用数据库空间。

物理删除的特点

  • 数据丢失:删除的数据会永久丢失,无法恢复。
  • 空间释放:物理删除会立即释放数据库空间。
  • 查询简洁:查询数据时不需要过滤已删除的数据。
  • 没有审计跟踪:数据一旦被删除,无法再追踪或审计。

物理删除的例子

删除数据行:

DELETE FROM users WHERE id = 1;

逻辑删除与物理删除的区别

特性 逻辑删除 物理删除
删除方式 标记数据为删除状态(例如通过字段 is_deleted) 直接从数据库中删除数据行
数据恢复 可以恢复,通过更新标记字段 数据被永久删除,无法恢复
空间释放 不释放空间,数据仍保存在表中 释放空间,数据完全从数据库中移除
审计跟踪 保留历史数据,便于审计和跟踪 删除后无法进行审计和历史追踪
查询复杂度 查询时需要排除被标记删除的数据 查询时没有逻辑删除的字段,查询更简单
性能影响 可能增加查询复杂度,尤其是在数据量大的时候 查询更简洁,性能可能更好(但有可能增加磁盘空间占用)

适用场景

  • 逻辑删除:适用于需要保留历史记录、需要审计跟踪、或者需要偶尔恢复数据的情况。例如,在电子商务平台,删除用户数据时希望保留用户的历史订单记录或交易记录。
  • 物理删除:适用于无需保留历史数据、数据完全过时或无用时的情况。例如,删除不再需要的临时数据或缓存数据。

总结

逻辑删除通过标记数据为删除状态,但数据仍保存在数据库中,可以恢复和审计。物理删除则是直接从数据库中删除数据,无法恢复。选择使用逻辑删除还是物理删除,应根据具体的应用需求来决定,特别是在数据安全、性能和历史记录保存方面的考量。

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

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

相关文章

Derby 数据库介绍(1)--简介

Apache Derby 是 Apache DB 的一个子项目,是一个完全用 Java 实现的开源关系数据库,采用 Apache License 2.0 许可;本文主要介绍其基本概念及安装。 1、Derby 特点 Derby 体积小——基础引擎和嵌入式 JDBC 驱动程序约 3.5MB。Derby 基于 Java、JDBC 和 SQL 标准。Derby 提供…

参数占位符 #{xx} 和 ${xx} 的区别

#{xx} :带有#{}的SQL会采用SQL预编译技术,预编译后的SQL中 #{} 被替换为 “?”,这里的 “?”叫变量占位符,在实际执行SQL时会用“xx”的实际值替换变量占位符,效率更高,可以防止SQL注入SQL预编译:MySQL执行SQL有几个步骤,“查缓存->[语法分析->优化->编译-&…

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别 前言 HarmonyOSNext中集成了强大的 AI 功能。Core Speech Kit(基础语音服务)是它提供的众多 AI 功能中的一种。 Core Speech Kit(基础语音服务)集成了语音类基础 AI 能力,包括文本转语音(TextToSpeech)及语音识别(Spee…

【原创】ARM64 实时linux操作系xenomai4(EVL)构建安装简述

本文简要记录在瑞芯微RK3588(ARM64)构建安装实时linux操作系统xenomai4的过程,以及实时性测试,希望对你有所帮助!目录0 环境说明1 内核构建2 库编译方式1 交叉编译方式2 本地编译3 测试单元测试hectic:EVL 上下文切换latmus:latency测试4 RK3588 xenomai4实时性能5 总结 本…

最新版chrome如何下载和安装?附安装包

前言 大家好,我是小徐啊。我们在Java开发应用的时候,经常是需要用到浏览器来帮助我们开发的。而浏览器中,谷歌浏览器chrome当属功能最强大的浏览器。今天小徐就来介绍下如何安装chrome。文末附获取方式。 如何安装chrome 首先,双击chrome的安装包,开始安装。然后,可以看到…

[笔记]均分纸牌问题

Index链形均分纸牌每次仅可交换\(1\)张 每次可交换多张环形均分纸牌每次仅可交换\(1\)张 每次可交换多张拓展性很强的贪心问题。或许能推广到树之类的结构上,或者拓展到方案计数问题之类,不过目前还没想好啦。 链形均分纸牌 每次仅可交换\(1\)张 最基础的例题是这样的:有\(n…

掌握PageRank算法核心!你离Google优化高手只差一步!

0 前言 98年前的搜索引擎体验不好:返回结果质量不高:搜索结果不考虑网页质量,而通过时间顺序检索易被钻空:搜索引擎基于检索词检索,页面中检索词出现的频次越高,匹配度越高,这样就会出现网页作弊的情况。有些网页为了增加搜索引擎的排名,故意增加某个检索词频率当时Goo…

ApacheDirectoryStudio如何安装和使用?附安装包

前言 大家好,我是小徐啊。ldap数据库是我们Java开发中,经常会用到的一种数据库。这种数据库是树形结构的,和平常的mysql等数据库还不太一样。但目前对应连接ldap数据库的连接工具比较少,且功能也不强大。今天,小徐就来介绍下一款比较好的连接ldap数据库的连接功能,那就是…

服务器 数据库被攻击如何处理

最近系统有点卡,查看了一下系统事件,发现有人攻击服务器数据库。 以下是我的解决方案 1、修改密码位复杂的密码 2、修改默认数据库默认端口目前已解决下面的腾讯的小哥给的建议,总体差不多一个意思 1、服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂随机密码 ,…

字符数组及应用

这两个等价 长度都为10。这两个等价 长度都为11。如果有:则:注意: 作者QQ4577105

PyQt5 使用 QPlainTextEdit/QTextBrowser 与 Logging 结合后显示日志信息

PyQt5 使用 QPlainTextEdit/QTextBrowser 与 Logging 结合后显示日志信息 本文演示 PyQt5 如何与 Python 的标准库 Logging结合,然后输出日志信息到如:QPlainTextEdit QTextBrowser上 代码结构 本文中全部代码全在test_QPlainTextEdit_Log.py这一个文件中编码,步骤中有变动的…

2024-2025-1 20241314 《计算机基础与程序设计》第十二周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第十二周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十二周作业这个作业的目标 复习作业正文 正文教材学习内容总结引言与文件概述在《C语…