我一直有一种奇怪的感觉,就是从某些类型的表中删除行。
例如,如果我有一个用户表...当他们删除他们的帐户时,而不是完全删除他们的行,我一直在标记为“死”或不活动。如果我再次需要它,我可以保留它们存在的记录。
在这样的情况下 - 考虑性能,开销等 - 我应该删除该行,还是只标记为非活动状态?
哪个更“常见”?
答案 0 :(得分:4)
就个人而言,我几乎总是使用你所描述的“软删除”。
如果空间有问题,我会有一份工作,会在删除软删除的记录一段时间之后定期清理它们。
答案 1 :(得分:3)
也许您可以将非活动的MySQL记录移动到另一个用于保存非活动帐户的表中?这样,如果需要,您可以简单地将它们移回,或者如果数据库大小成为问题,则删除表。
答案 2 :(得分:3)
从数据库中永久删除数据非常有价值。标记为dead
。
我通常给出这种情况的状态。在这种模式
0
无效1
有效2
Trashed 答案 3 :(得分:1)
除了“软”删除之外,另一种解决方案是使用“审计表”。我最近在dba.stackexchange.com上问了what they were。
审计表通常用于记录在第二个表上执行的操作,例如插入/更新/删除,可能存储旧值和新值,时间等。
可以直接使用触发器实现它们。
优点:
缺点:
答案 4 :(得分:1)
这个问题让我记住了这个有趣的anecdote。我的观点:在硬删除和软删除之间进行选择时需要考虑很多因素,没有拇指规则可以告诉您选择哪一个。