SETUP:我有一个非常大的SSIS包,它对许多不同的平面文件进行排序,并将它们放入符合T.除了日期。日期以格式结束:当然,对于"MM/dd/yyyy HH:mm:ss.ffffff.",对于dbtimestamp,需要将其转换为"yyyy-MM-dd HH:mm:ss.ffffff"。在任何给定的文件上,我至少有两个日期;创建和更新。我有更多的。
PROBLEM:在我解析的26个文件中,一个文件比另一个文件大。在某些情况下,它可以是40+ MB。以前它似乎运行得很好,但是通过派生出3个日期的派生列组件的运行速度非常慢。大约需要30分钟来解析~90,600行.
当数据流正在执行时,我正在观察它,瓶颈看起来非常像派生列。我报告所有的错误行,如果它们碰巧存在,而没有,所以我知道它没有窒息行.我只是不知道为什么要这么久。CPU在执行时高达100% (这并不令人惊讶),但是内存保持在12%的低位。
这里是在每一行的3个日期中的每个日期上发生的确切的转换:
(DT_DBTIMESTAMP)(SUBSTRING(COLUMN,7,4) + "-" + SUBSTRING(COLUMN,1,2)
+ "-" + SUBSTRING(COLUMN,4,2) + SUBSTRING(COLUMN,11,14))有什么想法吗?
发布于 2013-04-20 18:54:14
我复制DB是因为进行了大量的更改,并且索引没有正确恢复。,这减缓了最大的表的速度。删除派生步骤帮助我发现,尽管监视数据流的SSIS执行使得它看起来像是派生的步骤,但它还是进一步深入了这条线。
我意识到这种情况可能不会经常发生,但我会把线程留在这里,以防其他人出现问题,并像我一样错误地识别它!
https://stackoverflow.com/questions/16116333
复制相似问题