逻辑删除还是物理删除?

504 阅读1分钟

物理删除:

物理删除就是将数据从硬盘中删除,可以释放存储的空间,缩小数据表的体积。 DELETE,Drop,TRUNTRUNCATE 都是物理删除。

物理删除的代价:

1 物理删除是真的删除,恢复的难度很大。

如果我们不小心删除了,那么我们有2种方法来恢复表,第一种是逐条分析sql语句,除掉让数据删除的部分,重新执行sql语句。
第二种方法是采用延时同步的方法,用2个数据库,一个保持当前的数据,一个延迟保存24小时后的数据,这样我们一个数据库出现问题的时候,可以直接用另外一个数据库。

2 物理删除会让连续的主键值变得不连续,导致分页查询变慢,

什么样的数据不适合做物理删除?

核心业务表的数据不适合做业务的变更,只做状态的更改。
但是当我们想删除一些数据来增大空间的时候,我们可以采用转移数据,将一些数据转移到其他的表中。

逻辑删除:

我们可以在数据表中添加一个字段,比如说TINYINT,让0表示这个数据已经被删除,1表示数据还在。

使用这个语句,创建一个和t_user结构一样的表。

CREATE TABLE t_user_history LIKE t_user;