【问题标题】:How to reduce transaction log size for an SSIS ETL process?如何减少 SSIS ETL 进程的事务日志大小?
【发布时间】:2012-02-16 21:00:12
【问题描述】:

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

70 GB 已接近系统的物理极限,仅 I-O 就会有性能损失。

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

数据库恢复模式设置为简单。可以允许 SISS 独占访问暂存数据库。

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

一些注意事项:

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

关于这个问题有什么经验、想法或建议吗?

【问题讨论】:

    标签: sql-server ssis transaction-log


    【解决方案1】:

    如果此流程每周运行一次,我假设数据在进入系统时不需要进行处理。为了澄清(如果我错了,请纠正我),你有一些数据集,你每周一次加载到数据库中。

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

    【讨论】:

    • 您的假设是正确的,即在 E 步骤中存在从源到传输的纯副本。这些复制任务在 SISS 中实现。我认为这在后台使用了批量复制,但会更仔细地研究它。我认为日志主要在转换步骤期间增长,但也会更仔细地研究。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多