我有一个任务,它使用数据流任务将记录从 Oracle db 提取到我们的 SQL。该套餐每天运行约 45 分钟。此包将刷新约 15 个表。除了一个,其他都是增量更新。所以几乎每个任务都运行 2 到 10 分钟。

完全更换的一包运行长达 25 分钟。我想调整此数据流任务以使其运行得更快。

表中只有 400k 行。我确实阅读了一些关于 DefaultBufferSize 和 DefaultBufferMaxRows 的文章。我有以下疑问。

  • 如果我可以将 DefaultBufferSize 设置为 100 MB,是否有任何地方可以查看或分析我可以提供多少。
  • DefaultBufferMaxRows 设置为 10k。即使我给了 50k 并且我为 DefaultBufferSize 提供了 10 MB,如果它只能容纳大约 20k,那么 SSIS 会做什么。只是忽略那些 30k 记录还是它仍然会拉出所有那些 50k rocords(假脱机)?
  • 我可以使用日志记录选项来设置适当的限制吗?
  • 最佳答案

    作为一般做法(并且如果您有足够的内存),少量的大缓冲区比大量的小缓冲区要好,但直到您将页面分页到磁盘(这显然是不好的)

    要测试它,您可以记录事件 BufferSizeTuning,它会显示每个缓冲区中有多少行。

    此外,在开始调整缓冲区的大小之前,您可以做出的最重要的改进是通过删除不需要的列和适本地配置数据类型来减小每行数据的大小。

    关于sql - SSIS DataFlowTask DefaultBufferSize 和 DefaultBufferMaxRows,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15128044/

    10-11 01:23