Performance SSI在几分钟后明显变慢有什么原因吗?

Performance SSI在几分钟后明显变慢有什么原因吗?,performance,ssis,Performance,Ssis,我正在针对SQL 2008运行一个相当重要的SSIS包,并且在我的开发环境(Win7-x64+SQL-x64-Developer)和生产环境(Server 2008 x64+SQL Std x64)中都得到了相同的结果 症状是初始数据加载以每秒50K-500K记录的速度尖叫,但几分钟后速度急剧下降,最终缓慢爬行,令人尴尬。数据库处于简单恢复模型中,目标表为空,并且满足了日志记录最少的批量插入的所有先决条件。数据流是从原始输入文件到模式匹配表的简单加载(即没有复杂的数据转换、没有排序、没有查找、没

我正在针对SQL 2008运行一个相当重要的SSIS包,并且在我的开发环境(Win7-x64+SQL-x64-Developer)和生产环境(Server 2008 x64+SQL Std x64)中都得到了相同的结果

症状是初始数据加载以每秒50K-500K记录的速度尖叫,但几分钟后速度急剧下降,最终缓慢爬行,令人尴尬。数据库处于简单恢复模型中,目标表为空,并且满足了日志记录最少的批量插入的所有先决条件。数据流是从原始输入文件到模式匹配表的简单加载(即没有复杂的数据转换、没有排序、没有查找、没有SCD等)

该问题具有以下特性和弹性:

  • 无论目标表是什么,问题仍然存在
  • RAM使用率较低(45%)-有大量备用RAM可供SSIS缓冲区或SQL Server使用
  • Perfmon显示缓冲区没有假脱机,磁盘响应时间正常,磁盘可用性高
  • CPU使用率低(sqlserver.exe和DtsDebugHost.exe之间的共享率徘徊在25%左右)
  • 磁盘活动主要在TempDB.mdf上,但I/O非常低(<600 Kb/s)
  • OLE DB目的地和SQL Server目的地都存在此问题
  • 总而言之,我希望在包减速之前磁盘、CPU或RAM都会耗尽,但实际上,SSIS包似乎正在午睡。SQL server仍然对其他查询作出响应,并且我找不到任何性能计数器或记录的事件表明问题的原因


    我将非常感激任何合理的回答/建议。

    您是否有任何承诺?我已经看到,当工作集变得太大时(可以肯定,这是一个相对的度量),这种事情会变慢。定期提交应该可以防止这种情况发生。

    第一个想法:

    • 数据库文件是否在增长(没有MDF的即时文件初始化)
    • 是否对上载进行了批处理/事务处理?阿卡,这是一笔大交易吗?)

    诊断SSIS数据流性能问题的最佳方法是分解

    第1步-衡量您当前的软件包性能。你需要一个基线。 第2步-备份您的包,然后编辑它。删除目标并将其替换为行计数(或流的另一端友好转换)。再次运行包以测量性能。现在您知道了您的目的地所造成的性能损失。 步骤3-再次编辑包,从数据流底部删除下一个转换“向上”。运行和测量。现在您知道了该转换的性能损失。 步骤4…n-冲洗并重复


    你可能不必一路往上爬,就能知道你的限制因素是什么。当您找到它时,您可以问一个更有针对性的性能问题,比如“我的数据流中的X转换/目标速度慢,下面是它的配置方式,这是我的数据量和硬件,我有什么选项?”至少,您会确切知道问题所在,这就阻止了大量的白鹅追逐。

    我们终于找到了解决办法。。。问题在于,我的客户机使用的是VMWare ESX,尽管虚拟机报告了大量的空闲CPU和RAM,但VMWare专家必须在SSIS来宾虚拟机真正开始运行之前为其预分配(即gaurantee)CPU。没有这一点,SSIS将运行,但VMWare将缩减资源——这是一个奇怪的怪癖,因为其他进程和软件让VM保持清醒。不确定SSI为何不同,但正如我所说,VMWare专家通过保留RAM和CPU解决了这个问题

    我还有一些其他反馈,通过清单的形式列出了要在SSIS中取得优异性能需要做的事情:

  • 确保SQL登录具有批量数据权限,否则数据加载将非常缓慢。还要检查目标数据库是否使用简单恢复模式或大容量日志恢复模式
  • 避免对大数据上的组件进行排序和合并—一旦它们开始交换到磁盘,性能就会下降
  • 已排序的输入数据(根据目标表的主键),并在目标表上禁用非聚集索引,在目标组件上将MaximumInsertCommitSize设置为0。这将完全绕过TempDB和log
  • 如果无法满足3的要求,只需将MaximumInsertCommitSize设置为与数据流的DefaultMaxBufferRows属性相同的大小

  • MDF文件是预先分配的,但目标是在一个大批量中提交的。我会尝试将其分解。我会在此处发布反馈,让您知道这是否解决了问题。感谢您的反馈Todd-这似乎是一种非常实用和合乎逻辑的方法来诊断导致问题的组件-但在这种情况下,我肯定这就是目的地。。。删除OLE DB或SQL Server目标,世界就会突然变成一个伟大的地方。把它们加回去,几分钟后,这个过程就慢下来了。顺便说一下,托德,感谢你创建了非常优秀的金球SCD组件!托德-我看到你参加了一个MSDN博客,其中一个格雷格在一台非常高端的x64机器上的性能有问题。他的问题描述听起来和我的一模一样,我们都在运行x64运行时。据您所知,x64 OLE DB源/目标组件是否存在任何问题?不可能。我运行X64太多-尽管我认为小负荷。SQLCAT站点是一个很好的资源,可以帮助你养成更大负载的良好习惯…下面的任何人都可以得到一些反馈。。。我曾尝试过托德的建议,即消除个别成分以找出原因,但没有效果。。。似乎在长时间运行内存密集型操作之后,包“睡着了”——最近在一个原始文件读取器上——这需要