只保留差异的SQL Server表



我有一个小任务要在SQL Server中创建日志记录表,它只保留差异,因为我每秒都要记录流数据,大多数时候,差异会很小。[DateIndex]和1列值的变化。

示例:

DateIndex C1 C2  C3 C4 C5 C6 C7
---------------------------------
1         1   2  3  4  5  6  7.0
2         1   2  3  0  5  6  7.1
3         1   0  3  4  5  6  7.3

有没有办法让表格只写下差异,而不是整行?

根据您的需求和SQL Server版本,这听起来像是SQL Server 2008及更高版本中提供的变更数据捕获(CDC(或SQL Server 2016及更高版中提供的临时表的工作。

CDC使用事务日志在数据库的"系统表"区域中捕获系统生成的更改日志表中的插入、更新和删除,并在可配置的时间段内保留数据。默认为三天,但您可以根据需要将其设置为最长或最短的时间。该表包含所有插入、所有删除以及用于更新的前后快照。

使用时态表,将在数据库的主表区域中创建History表。主临时表包含数据的当前状态,历史表包含所有更改。时态表使您能够编写一个查询,该查询将返回某个时间点存在的数据。不过,它在开箱即用的时间开始时存储数据,因此在高流量应用程序中可能有点存储密集型。

在开始自己的解决方案之前,我会先研究两者。

否,但如果您想将CURRENT数据实际写入表中,则可以通过触发器自动生成delta。不过,还是要把它们写在一张合适的桌子上,这是不可能的。

相关内容

  • 没有找到相关文章

最新更新