我如何数据仓库的一组表和删除源?

我在MS SQL中有一个大表,当第三方应用程序写入时,我遇到了问题。 我计划解决这个问题的方法是移动一个数据库中的所有数据,并定期删除源数据库中的数据。 问题出现在表中有太多数据(数以亿计的行)时,但是我需要能够读取所有可能数十亿行的数据。 我没有修改源数据库的能力,因为它是第三方的。

我很好奇有什么方法可以帮助实现这一点。 是否有可能复制一个表的方式,当我删除源表中的数据,它不会被删除目标表中?

这个问题有很多可能的解决scheme。 select正确的一个是取决于你的环境和你的要求,这里没有详细说明。

根据你陈述的需要查询整个数百万(或十亿)行表,我期望你需要从供应商的数据库做一些报告。 这里有一些可能的解决scheme,我会考虑实现这个目标:

  • READ UNCOMMITTED:以READ UNCOMMITTED(例如WITH NOLOCK)的forms执行查询。 这将确保查询和OLTP活动不会相互干扰,但是如果您查询最新的数据,则结果可能会变得有点肮脏。
  • 快照:为只读查询创build数据库快照。 定期刷新它们,或在运行报告之前(如果它们是临时的)。 如果报告性能是您希望从表中清除数据的唯一原因,那么这可能是您的最佳解决scheme。
  • ETL:在包含所需表的同一台服务器上创build一个_Archive数据库。 使用每日/每周/每月归档作业从prod数据库填充数据,数据从prod数据库移入数据,然后在插入成功后从prod删除。

多一点信息可能会帮助我们更好地帮助你。

标准许可证是使用某种ETL脚本在删除之前复制数据。

  • 插入创build时复制每个新条目的触发器
  • 脚本定期或在删除之前插入非重复的行。

没有理由说你的数据仓库表甚至不需要在同一台服务器上,更不用说绑定到带有约束的实时数据库。 删除不应该影响仓库。 只需要添加数据的命令。