刷新副本数据库的方法

时间:2015-08-18 17:54:01

标签: sql sql-server ssis

我有一个包含一个表的副本数据库。它需要每晚刷新。有三种方法:

  1. 使用VB6记录集或.NET datareader循环遍历表中的所有记录。进行适当的更改。
  2. 使用SSIS截断表中的数据然后刷新它
  3. 使用校验和来确定哪些记录已更改,然后使用SSIS刷新该数据
  4. 使用校验和来确定已更改的记录,然后使用记录集或datareader
  5. 刷新该数据

    方法一的问题在于它太慢了。运行大约需要两周时间,因为有90,000,000条记录。方法四也太慢了。每天大约有20,000个更新。

    因此我认为它在选项二和选项三之间。选项二只需要大约十五分钟。但是,用户可能会在被截断和刷新时搜索该表。

    我想知道我是否可以使用交易来隔离工作。但是,如果我在刷新数据时使用序列化事务,则表将被锁定十五分钟。还有其他选择吗?

2 个答案:

答案 0 :(得分:0)

使用SQL作业启动的存储过程怎么样?它可能与#1类似,但速度更快。在进行更新之前重新编制索引也可能有所帮助。

答案 1 :(得分:0)

绝对选项3.截断90密耳。刷新20,000的行(因为我确定你知道)非常低效,只会不必要地填写你的事务日志。

SSIS拥有完整的交易处理支持,因此应该能够轻松满足您的需求。

这是一篇关于在SSIS中使用交易的好文章:https://www.mssqltips.com/sqlservertip/1585/how-to-use-transactions-in-sql-server-integration-services-ssis/