我的系统需要在特定时间点对特定表格进行快照。
目前,快照查询表中数据的过程,并将输出放入Temp表(如阶段表而不是内存表中)。
其中许多流程可以同时并行运行(每小时100多个)。并且要复制的表可以运行到GB的数据中。
我正在考虑使用数据库快照,因此每个进程都可以使用自己的快照并使用它。
这种方法的优点和缺点是什么?
有没有更好的方法来解决这个问题?
答案 0 :(得分:2)
我当然会考虑使用快照,但在您决定采用某种方式之前,您需要考虑以下几点:
当然还有其他一些事情要考虑,但这不是一个糟糕的起点。 Books OnLine有一篇关于快照使用的相当详细的文章,我在决定之前会阅读。 http://msdn.microsoft.com/en-us/library/ms175158%28v=SQL.90%29.aspx还有一个关于限制的部分:http://msdn.microsoft.com/en-us/library/ms189940%28v=SQL.90%29.aspx
希望这有帮助。
答案 1 :(得分:0)
如果您需要拍摄数据的快照以进行备份/恢复,我建议您使用SQL Server的备份功能(即完整的事务日志备份)。
如果您的目标是从某些表中捕获数据以用于历史目的,那么您可以实现一堆运行类似的SQL作业:
select *
into archive_table
from normal_table
确保在执行此操作之前关闭事务日志(即将数据库设置为“简单”),因为这会大大加快此过程。