我正在运行一个针对SQL 2008的相当大的SSIS包 - 我在开发环境(Win7-x64 + SQL-x64-Developer)和生产环境(Server 2008 x64 + SQL Std x64)中获得相同的结果.
症状是初始数据加载在每秒50K到500K记录之间尖叫,但几分钟后速度急剧下降并最终缓慢地爬行.数据库采用简单恢复模型,目标表为空,并且满足最小日志批量插入的所有先决条件.数据流是从RAW输入文件到模式匹配表的简单加载(即没有复杂的数据转换,没有排序,没有查找,没有SCD等)
该问题具有以下品质和弹性:
总结一下,我预计在软件包减速之前,磁盘,CPU或RAM都会耗尽,而不是像SSIS软件包正在午睡.SQL服务器仍然响应其他查询,我找不到任何性能计数器或记录事件背叛问题的原因.
我会非常感激地回答任何合理的答案/建议.
我们终于找到了一个解决方案......问题在于我的客户端正在使用VMWare ESX,尽管VM报告了大量的空闲CPU和RAM,但VMWare专家必须预先分配(即保证)CPU用于SSIS来宾VM真正开始飞行之前.如果没有这个,SSIS将会运行,但VMWare会缩减资源 - 这是一个奇怪的怪癖,因为其他进程和软件使VM保持清醒状态.不确定为什么SSIS不同,但正如我所说,VMWare大师通过保留RAM和CPU来解决这个问题.
我还有一些其他的反馈,通过一份清单来确定SSIS中的出色表现:
使用SSIS数据流诊断性能问题的最佳方法是使用分解.
第1步 - 测量您当前的包装性能.你需要一个基线.第2步 - 备份您的包,然后进行编辑.删除目标并将其替换为行计数(或其他流动结束友好转换).再次运行包以测量性能.现在您知道目的地产生的性能损失.步骤3 - 再次编辑包,从数据流的底部删除下一个"向上"转换.运行和测量.现在您知道该转换的性能损失.步骤4 ... n - 冲洗并重复.
你可能不必一直爬上你的流程来了解你的限制因素是什么.当你找到它时,你可以提出一个更有针对性的性能问题,比如"我的数据流中的X转换/目标很慢,这是它的配置方式,这是我的数据量和硬件,我有什么选择?" 至少,你会确切地知道你的问题在哪里,这会阻止很多疯狂的追逐.
归档时间: |
|
查看次数: |
32228 次 |
最近记录: |