sql - 在 SQL 中归档数据

标签 sql database database-design

需要一些关于如何最好地解决这个问题的建议。基本上,我们的数据库中有一些表以及这些表的已删除数据的存档版本(例如 Booking 和 Booking_archive)。这两个表中的表结构完全相同,除了存档表中的两个额外列:DateDeleted 和 DeletedBy。

我已经删除了这些存档表,并且只是将 DateDeleted 和 DeletedBy 列添加到实际表中。我的计划是然后对该表进行分区,以便我可以将存档信息与非存档信息分开。

这是最好的方法吗?我只是不喜欢使用两个表来区分存档和非存档数据的想法。

执行此操作还有其他建议/指示吗?

最佳答案

归档的目的是为了提高性能,所以我认为将数据分离到另一个表中肯定更好。事实上,我会尽可能地在单独的服务器上创建一个存档数据库,并将存档数据保存在那里。这将产生最大的性能提升。亚军架构是同一服务器上的第二个“存档”数据库,具有完全重复的表。

即使使用分区,您仍然会遇到表锁定问题和硬件限制,这会降低您的速度。单独的表或数据库将消除前者,而单独的服务器或每个分区一个驱动器可以解决后者。

至于存储归档日期,我认为我不会费心在生产数据库上这样做。不妨在 archive-db 表上设置你的时间戳,这样当你插入记录时,它会自动用归档时的日期时间标记它。

关于sql - 在 SQL 中归档数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517984/

相关文章:

sql-server - Guid 是数据库的最佳身份数据类型吗?

database-design - 一个图形数据库中有多个 'databases'

java - 在 Java 中将 SQL 解析为数组

sql - 通过一个 mysql 查询获得 5 级关系

ruby - 如何合并 Heroku 上具有相同架构的两个数据库?

android - 当我启动我的应用程序时,如何强制我的 SQLiteOpenHelper 中的 onCreate 运行?

C# MySQL数据库相关

SQL查询以获取当前和去年的销售额

MySQL:具有最小日期的唯一行

mysql - 海量MySQL数据库