禁用某些表的日志记录

dan*_*ans 11 sql-server-2005 sql-server transaction-log

我使用的是 SQL Server 2005。我有两个包含聚合信息的表。信息不断更新,每天产生近 5GB 的日志数据。(这比整个数据库还大!)我想禁用对这些表的日志记录,因为回滚并不是真正必要的。但是,我想继续登录数据库中的其他表。

是否可以禁用数据库中某些表的日志记录?如果没有,我可以将两个表放在同一个架构中,然后禁用架构上的日志记录吗?将两个表移动到单独的数据库并在那里禁用日志记录的唯一选择是什么?

更新: 我想我会解释为什么我真的不需要在这些表上记录活动。

这两个表充满了 GPS 数据,因此它们变得非常大。第一个表从现场的六个 Android 表中捕获原始位置。来自每个平板电脑的新数据每 5-10 秒就会出现一次。然后将该信息聚合为 locationA、locationB、travelTime。目标是根据实际驾驶数据,最终实现所有地点之间最短的旅行时间。数据只针对小城市,精确到小数点后四位,易于管理。然而,随着新的原始数据的出现,需要更新的旅行时间变慢,需要插入新的旅行时间。

汇总原始数据后,将对其进行清除。我们不会倒退到更长的旅行时间,所以这就是为什么在这些表中回滚并不那么重要。

Jon*_*gel 9

  • 是否可以禁用数据库中某些表的日志记录?
  • 我可以将两个表放在同一个架构中,然后禁用架构上的日志记录吗?
  • 将两个表移动到单独的数据库并在那里禁用日志记录的唯一选择是什么?

不能禁用用户操作的日志记录。

有一类称为操作的最低限度记录的操作,只允许交易被轧背部(而不是还能够滚动前进)。但是,听起来您正在做的事情并不符合适用的标准,我也不认为这可以解决问题。

SQL Server 解决方案是将暂存表置于SIMPLE恢复中的新数据库中,与聚合结果数据库分开,我认为该数据库处于FULL恢复中。虽然这不会减少日志记录,但它会消除备份数据加载生成的日志的需要。(请参阅我的博客文章了解日志记录以及选择数据库恢复模型所涉及的一些因素。)

将表分离到另一个数据库中可以灵活地将日志文件放置在更快的 I/O 子系统上,可能是一个本地连接的固态驱动器的小阵列。

另外,请考虑单独使用 SQL Server 可能不是解决问题的最佳解决方案。还有其他 RDBMS 解决方案可以完全禁用某些表的日志记录。可以在另一个系统中暂存和聚合数据,并将结果合并到现有的 SQL Server 数据库中,该数据库受到完整日志记录和备份的良好保护。