5

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

完全更换的一个包运行时间长达 25 分钟。我想调整这个数据流任务以更快地运行。

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

  1. 如果我可以将 DefaultBufferSize 设置为 100 MB,是否有任何地方可以查看或分析我可以提供多少。

  2. DefaultBufferMaxRows 设置为 10k。即使我给了 50k 并且我为 DefaultBufferSize 提供了 10 MB,如果它只能容纳大约 20k,那么 SSIS 会做什么。只是忽略那些 30k 记录或者它仍然会拉所有那些 50k rocords(假脱机)?

  3. 我可以使用日志记录选项来设置适当的限制吗?

4

1 回答 1

4

作为一般做法(如果你有足够的内存),较少数量的大缓冲区比大量的小缓冲区更好,但直到你有分页到磁盘的时候(这很糟糕,原因很明显)

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

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

于 2013-02-28T14:44:14.607 回答