2

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

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

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

这样做的任何其他建议/指针?

4

2 回答 2

4

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

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

至于存储存档日期,我认为我不会在生产数据库上这样做。不妨在存档数据库表上设置您的时间戳,因此当您插入记录时,它会在存档时自动标记日期时间。

于 2012-11-22T18:04:26.073 回答
4

解决方法取决于:

  1. 具有此类存档表的表数
  2. 数据进入归档表的到达率是多少?
  3. 您想投资独立服务器的软件/硬件吗

基于上述 - 各种选项可能是:

  1. 同一数据库,同一服务器上的不同架构
  2. 在同一台服务器上存档数据库
  3. 在不同的服务器上存档数据库

如果它是归档数据并且没有机会回到主表中,请不要进行分区。您还可以在归档数据(保留期或到期日期)上添加生命周期管理列,以便也可以有效地管理归档数据生命周期。

于 2012-11-23T15:35:49.100 回答