Sql server 如何减少SSIS ETL流程的事务日志大小?

Sql server 如何减少SSIS ETL流程的事务日志大小?,sql-server,ssis,transaction-log,Sql Server,Ssis,Transaction Log,对于10 GB左右的SQL Server 2008数据库,事务日志的大小会增长到70 GB左右,这是一个问题。这发生在使用SSIS 2008运行的ETL流程的暂存数据库中。该过程大约需要8小时才能完成,每周运行一次 70 GB正接近系统的物理限制,仅I-O一项将受到性能损失 我们永远不会使用日志来恢复临时数据库,因为每次运行ETL都会重新启动,并在进程失败时恢复早期的数据库备份。在这一点上,增量ETL过程将很难实现,因为配置可能在运行之间发生变化,从而改变许多或所有计算 数据库恢复模型设置为“简

对于10 GB左右的SQL Server 2008数据库,事务日志的大小会增长到70 GB左右,这是一个问题。这发生在使用SSIS 2008运行的ETL流程的暂存数据库中。该过程大约需要8小时才能完成,每周运行一次

70 GB正接近系统的物理限制,仅I-O一项将受到性能损失

我们永远不会使用日志来恢复临时数据库,因为每次运行ETL都会重新启动,并在进程失败时恢复早期的数据库备份。在这一点上,增量ETL过程将很难实现,因为配置可能在运行之间发生变化,从而改变许多或所有计算

数据库恢复模型设置为“简单”。可以允许SIS以独占方式访问临时数据库

我们想知道调整SISS能带来什么

一些考虑:

SISS似乎与数据库建立了多个连接。这怎么会干扰调整包的事务隔离级别和事务的“长度”,即在某些步骤完成后提交? 在单用户模式下运行时,进程性能是否会提高?SISS能应付吗? 将包配置为使用设置Transaction=Unsupported运行是否明智?
关于这个问题有什么经验、想法或建议吗?

如果这个过程每周运行一次,我假设数据进入系统时不需要进行处理。为了澄清并纠正我的错误,您有一些数据集,每周都要加载到数据库中一次


如果日志有那么大,我会假设您没有进行批量插入。如果没有,那就做吧!这将加快进程并减少日志大小。

如果此进程每周运行一次,我假设数据进入系统时不需要进行处理。为了澄清并纠正我的错误,您有一些数据集,每周都要加载到数据库中一次


如果日志有那么大,我会假设您没有进行批量插入。如果没有,那就做吧!这将加快进程并减少日志大小。

您的假设是正确的,即在E步骤中存在从源到传输的纯拷贝。这些复制任务在SISS中实现。我认为这是在引擎盖下使用批量复制,但我们将更仔细地研究它。我认为日志主要是在转换步骤中增长的,但我们也会更仔细地看一看。您的假设是正确的,即在E步骤中存在从源到传输的纯拷贝。这些复制任务在SISS中实现。我认为这是在引擎盖下使用批量复制,但我们将更仔细地研究它。我认为日志主要在转换步骤中增长,但我们也将更仔细地研究这一点。