首页 > 数据库 >数据库物理删除与逻辑删除

数据库物理删除与逻辑删除

时间:2022-11-03 22:31:50浏览次数:83  
标签:文件 逻辑 删除 恢复 数据库 数据 物理


概念

逻辑删除:文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符,通常这种删除操作是可逆的,就是说用适当的工具或软件可以把删除的文件恢复出来。

物理删除:指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的,物理删除是计算机处理数据时的一个概念。

逻辑删除就是对要被删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。

自己理解:
1、比如磁盘中的文件删除,在删除操作时,只是在文件分配表FAT中做一个删除标记,但磁盘扇区中的文件数据依然存在,这就是逻辑删除!而物理删除,则是一些软件在删除时采用一些特定的算法,对删除文件所在的扇区反复读写,以达到彻底删除的目的。至于写文件时,扇区的分配则是随机的。逻辑删除的文件容易恢复,而物理删除则很难恢复!
2、就比如删除东西的时候,逻辑删除的时候,没有删除数据库里的数据,所以逻辑删除可以恢复。当物理删除的话,就是把数据库里的数据也删除,所以没办法恢复。
3、最主要的区别就是能恢复和不能恢复。

区别

  • 物理删除是计算机处理数据时的一个概念。
  • 逻辑删除就是给要删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在(这行记录还是存在的),而物理删除则是把数据从存储介质上彻底删除掉。
  • 逻辑删除的文件容易恢复,而物理删除则很难恢复!
  • 数据库中的删除操作一般是逻辑删除,被删除的那行记录仍然是存在的。

其他

真实世界是没有删除的。订单作废,用户禁用,员工离职,文稿废弃,优惠券作废都是状态的变化。所以 SQL 里面 DELETE 在业务场景里都不应该出现。

为了安全,生产环境不能有人或有程序是对数据库的表有 DELETE 权限的。

反对采用逻辑删除的:

  • 逻辑删除的设计还会导致常用的 unique key 失效(当然用户可将数据行中原来的码和​​is_deleted​​​ 一起作为 unique key,但是这样又会出现,再次删除时,系统中无法出现两个完全相同的 ID,又都是​​is_deleted=1​​的记录出现)。
  • 被“删除”的这条记录如果在业务中与大量的表有关联关系,那么在删除它时,就会引发很多的级联的更新,或者判断引用并提示用户无法修改正被引用的资源。而要保证这些全部更新无误,又要求事务一定可靠,若产生了状态不一致,那么这些“脏数据”的维护也是很痛苦的。
  • 当表中的记录数越来越大时,查询起来会越来越慢。

我能理解具体问题需要具体分析,是要“逻辑删除”还是“物理删除”,主要还是要根据实际的业务场景,比如互联网企业搜 /收集的个人信息、电商类平台用户的订单、金融类平台的交易记录,肯定是不能删除的。但是对于一些维护中间状态的数据,如果可以通过记录日志实现“留档”那么就可以真的删掉它。

不知道有没有那种开源组件,可以自动实现当我从一个表中物理删除一条记录时,它可以帮我将它转移到备份表中,我看了一个 MySQL 的审计插件,但是好像并不做这个用途的。或者有类似“ commit log ”那种东东,删除时只需要记录一个 log,有需要的时候可以从日志中恢复回来。

​​别删除数据​​

​逻辑删除真的不是一个好的设计​

​MySQL 删除数据是加一个字段做标记,还是将删除的数据插入到另外一张备份表里,哪种方案更好? - V2EX​

​不做显式删除,而用 status=0 代替,是好的实践么? - V2EX​

参考


标签:文件,逻辑,删除,恢复,数据库,数据,物理
From: https://blog.51cto.com/u_15851118/5821282

相关文章

  • 实验二:逻辑回归算法实验
    |20大数据三班||学号201613334|  【实验目的】1.理解逻辑回归算法原理,掌握逻辑回归算法框架;2.理解逻辑回归的sigmoid函数;3.理解逻辑回归的损失函数;4.针对特定应......
  • Redis 先操作数据库和先删除缓存, 一致性分析
    初始状态:数据库和缓存中v=10 第一种,先删除缓存在操作数据库:线程1准备更新数据库的值v=20,先删除缓存,此时线程2进来,缓存未命中,查询数据库v=10,写入缓存v=10,......
  • 逻辑回归算法实验
    实验二:逻辑回归算法实验| 20大数据三班 ||作业链接||学号|201613326|【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解......
  • CentOS7命令行创建LVM逻辑卷
    概述当初在安装CentOS7系统时没有使用LVM,后期安装应用后磁盘空间不够使用,在不跨服务器迁移数据的情况下解决磁盘空间问题。1.安装lvm命令yuminstall-ysystem-storage-man......
  • IDEA用Java创建删除文件,获取文件相关信息,创建删除目录操作
     目录   一、Java创建文件的三种方式二、Java删除文件三、Java获取文件相关信息四、创建删除目录操作五、Java删除目......
  • 07-jmeter-获取数据库返回的手机号码进行登录
    一、jmeter工具如何连接数据库-->请看 06-jmeter-使用jmeter工具初访数据库1、获取数据库中5条数据-->用Variablenames接收数据库返回值 2、添加ForEach控制器利......
  • MySQL---逻辑架构
    逻辑架构逻辑结构剖析MySQL服务器处理客户端请求 Connectors:MySQL服务器之外的客户端程序;Managemen......
  • 06-jmeter-使用jmeter工具初访数据库
     1、在jmeter->lib下->添加驱动->重启Jmeter工具  2、添加setUp线程组在这个线程组下面->选择配置元件->JDBCConnectionConfiguration(用于与数据库建立连接:需要......
  • 数据库1 mysq数据库的安装全套
    MySQL的数据库下载地址https://downloads.mysql.com/archives/installer/安装步骤:  点击execute检查依赖项 一直点next到这里的时候不用更改啥,也是点n......
  • 数据库等值查询与统计信息
    简介: 统计信息是为优化器的cost估算提供数据支撑,其中很重要的一点需求便是等值查询(EQUALS,IN等)场景下的基数估算。概念统计信息是为优化器的cost估算提供数......