**
数据库中数据的物理删除与逻辑删除
**
基本概念
逻辑删除(soft delete 软删除):文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符,通常这种删除操作是可逆的,就是说用适当的工具或软件可以把删除的文件恢复出来。
物理删除:指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的,物理删除是计算机处理数据时的一个概念。
逻辑删除就是对要被删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。
在数据库中
物理删除:delete from … where …
物理删除就是真正的把数据在数据库中删除,要恢复的话很困难,要具备很多条件还有很多限制,很难恢复。
逻辑删除(soft delete 软删除):update … set status = …
逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete) 或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中,方便日后做大数据 或者数据挖掘 。
通常用哪种个人建议:
这主要取决于这些数据对你们的重要程度,如果不重要(以后也不需要),那么可以物理删除,这样会节约存储空间,提升查询效率。相反,你逻辑删除的话,数据本身还是存储在磁盘的,只是用户看不到而已,长此以往的话,数据库会积累很多这样的数据,一般的做法是会定期物理删除这些逻辑删除的数据。
可以说就是一句话 要删除的数据重要不重要 以后有没有可能再用到。
如果不确定,还是建议用逻辑删除,为自己留一条后路,万一想找的时候没有了 就麻烦了。