将数据从实时表复制到SQL Server 2008R2中的另一个表?

时间:2013-01-02 23:23:11

标签: sql sql-server tsql triggers replication

我有一个表作为RealTimetable,另一个表作为HistoryTable。现在RealTimetable和HistoryTable具有相同的结构。我们需要一个进程将数据从RealTimetable复制到HistoryTable,然后每天从realtimetable中删除数据。由于实时表不能变得太大(它会导致我们的应用程序放慢速度),但我们需要保留实时表中的所有数据以用于记录和历史记录,因此我们将这些数据保存在HistoryTable中。

触发器和复制不是这个场景中最好的解决方案,因为实时表每天插入超过60,000到100,000次,设置要么会导致数据库中的大量开销,不是吗?

我想过只需要一个sp来将数据从realtimetable插入到HistoryTable每日不在HistoryTable中的数据,然后在数据插入过程之后从15分钟前删除实时表中的数据(因为数据可能是在插入过程和删除过程之间写入实时表。我们不想丢失这些数据。但这是一种肮脏的方式来做这件事。

请为我推荐适用于我的场景的替代解决方案..

1 个答案:

答案 0 :(得分:0)

没有一种干净的方法可以做到这一点,基本上你是乱糟糟的,因为你无法将所有数据保存在一个表中。

我开始简单,然后从一张桌子搬到另一张桌子,然后看看在我开始为你还不知道的问题构建复杂算法之前,这项工作有多好。

无论如何,我不会用触发器来填充历史记录。历史表上的慢速报告会阻止实时插入,这可能是您想要的最后一件事。

您是否考虑过sql是否是保存实时数据的最佳选择?如果你“只是”在那里殴打东西,所以你不会失去它,你从sql中得到的东西很少。