数据库采用物理or逻辑删除

物理删除

物理删除就是用DELETE,TRUNCATE,DROP语句来删除表数据

好处

物理删除是从硬盘上删除数据,释放存储空间,减小数据表的体积,对读写性能提升是有帮助的。

坏处

  • 物理删除是真删除,如果误删除了重要数据,恢复起来难度较大。在恢复时需要利用binlog日志来恢复数据,这里也就不展开了。
  • 物理删除会导致主键值不连续,导致在按主键id分页查询变慢。
    假如我们的分页的SQL是根据主键值来分页的,如果采用了物理删除,就会导致主键值不连续,就不能使用索引来进行查询了。
SLELECT ... FROM .... WHERE id > 10000 AND id < 10020

如上的SQL语句就是采用主键值分页,来代替limit分页,在主键连续时,是采用主键自带索引,如果不连续的话,索引失效就会变慢了。如果真的无法避免出现物理删除场景,关于大数据快速分页的文章也会介绍折中方案。

什么数据不能物理删除

核心业务的数据不能删除,像用户类,商品,订单,支付记录等等,都是不能物理删除,只做状态变更。像用户我们只做注销,禁用状态,商品只做下架/无效状态,订单记录,支付记录也都是取消状态。

如何既不物理删除,又能给数据表减压

innodb引擎下,数据表在到达2000万数据后,数据表的性能会下降,这个时候,我们可以把一些比较老的数据(比如订单表),可以专门迁移到历史表,历史表可以采用TokuDB引擎,或者直接使用mongdb。最后把原来老数据删除,这样子数据表的体积降下来了。那么性能也上去了。

逻辑删除

什么是逻辑删除

逻辑删除就是给数据表加一个状态字段比如is_delete,来表示数据的有效性,在查询的时候带上这个字段的条件

SELECT ...FROM ... WHERE isdelete = 0

核心业务表必须采用逻辑删除。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值