我正在寻找一些关于优化SSIS包的技巧。我运行了很多,但执行时间很长。一些包裹运行在数千或毫升(2-15)的记录上。由于晚上的时间还不够,他们重叠,有时运行3-4,这使它更加困难。我做了些测试。我发现在SSIS里,vievs真的很糟糕.当我运行一个SQL查询时,它们运行得更快,然后选择到表中的视图中,然后执行OleDB源/目标工作。在执行过程中,源行是在5-10分钟内选择的,记录超过5milin,但是将数据插入目标表需要花费10倍的时间。据我所知我得到了这些信息。
SSIS.Pipeline信息:缓冲区管理器检测到系统缺乏虚拟内存,但无法交换任何缓冲区。4个缓冲器被考虑,4个被锁定。要么由于未安装足够的内存,其他进程正在使用它,要么太多缓冲区被锁定,从而使管道无法使用足够的内存。信息:缓冲区管理器在0物理缓冲区中分配了0兆字节。
有什么办法可以让事情发展得更快吗?我需要同时入侵DefaultBufferSize和DefaultBufferMaxRows吗?它会出现10k和1000万美元的违约。
发布于 2021-05-28 14:15:57
一些笔记可以让你朝着正确的方向前进:
下面是关于此错误的
SSIS.Pipeline信息:缓冲区管理器检测到系统缺乏虚拟内存,但无法交换任何缓冲区。4个缓冲器被考虑,4个被锁定。要么由于未安装足够的内存,其他进程正在使用它,要么太多缓冲区被锁定,从而使管道无法使用足够的内存。
WHERE NOT EXISTS子句加载表仍然会更有效。TABLOCK,这将告诉SQL使用最小日志记录。一旦实现了暂存模式,就调优SQL以将数据加载到最终的table.WITH (NOLOCK) 提示的最终最大表之前,可以通过使用临时表来提高性能。,如果在读取数据时确实正在更新数据,则需要在加载数据之前对数据进行更新,别管幻影读取和其他可以happen.的可怕事情。
https://stackoverflow.com/questions/67735987
复制相似问题