• 物理删除会造成主键的不连续,导致分页查询变慢
  • 核心业务表的数据不建议做物理删除,只做状态变更
  • 既不删除数据,又能缩小数据表体积,可以把记录转移到历史表
  • 逻辑删除就是在数据表添加一个字段(is_deleted),用字段值标记该数据已经逻辑删除

定期把逻辑删除的表,转移到 history表中,减少体积

  • 写个定时程序,定时把逻辑删除的,转移到 history表,减少表的体积

数据只能逻辑删除,不能物理删除

逻辑删除

is_delete

image.png

复制表

  1. create table t_user_history like t_user;

物理删除

物理删除就是 彻底从数据表中删除
image.png

物理删除的代价

  1. 真删除,数据恢复难度大
  2. 造成主键的不连续,导致分页查询变慢

image.png

  • 数据库延迟同步,恢复数据

image.png

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

  • 逻辑删除的转移到 历史表
  • is_delete
  • 服务器空闲时,把逻辑删除的表转移到 历史表

image.png