sql-server - 仅保留差异的 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 使用事务日志来捕获系统生成的更改日志表(位于数据库的系统表区域)中的插入、更新和删除,并在可配置的时间段内保留数据。默认值为三天,但您可以将其设置为适合您需要的时间长短。该表包含所有插入、所有删除以及更新前后的快照。
使用时态表,会在数据库的主表区域中创建历史表。主时态表包含数据的当前状态,历史表包含所有更改。时态表使您能够编写一个查询,该查询将返回某个时间点存在的数据。但是,它在开箱即用的时间开始存储数据,因此在高流量应用程序中可能会占用一些存储空间。
在开始自己动手解决方案的道路之前,我会先调查一下。
推荐阅读
- java - 使用 HtmlUnit 保存完整页面时截断的文本
- web - OpenTok - 在视频通话中循环摄像头/将摄像头切换到移动设备上的前/后
- spring-integration - Spring Integration Java DSL:在拆分和聚合方法出现错误情况后如何继续?
- regex - Apache 重写以删除 index.php?
- python - line bot - 如何开始
- angular - 如何以角度路由相同的组件?
- c# - 检查文本框中的 int 是否为空 + 强制转换
- javascript - href可以是ID吗?
- python - 使用共现矩阵绘制网络
- encryption - 在 Wireshark 中解密 WPA2 WLAN 流量