Chr*_*ann 2 mysql sql database relational-database
最近,我偶然发现了以下问题:给出了一个简单的数据模型,其中包含“ Books”和“ Authors”。每个“书”都有对“作者”的引用。持久性是通过关系数据库实现的。除了添加书籍和作者,还可以删除它们。通常,如果要删除作者,我将执行SQL DELETE操作并删除相应的行。但是,在其他项目中,我没有看到有人打电话DELETE。相反,它们添加某种活动/已删除标志并将相应的行标记为“已删除”。
我的问题是:这是一般的最佳做法吗?有什么优势?我最好的猜测是:
DELETE操作具有更好的性能无论如何,这些只是猜测。有人知道答案吗?
不使用的原因有很多delete。首先,保持历史记录非常重要。我不会使用“只是”删除标志,而是使用有效日期。
其次,在操作系统中,这delete可能是昂贵的操作。该行需要从表,关联的索引中删除,然后可能会有级联的删除和触发器。
第三,delete由于表,行和索引被锁定,可能会阻止其他操作正常进行。这会降低操作系统的运行速度,尤其是在高峰时段。
第四,delete维护关系完整性可能很棘手-尤其是在未定义级联删除的情况下。
第五,存储很便宜。处理能力很便宜。因此,对于许多数据库来说,删除记录以恢复空间根本是没有必要的。
这并不意味着您应该始终避免删除记录。但是有非常正当的理由不急于删除数据。
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |