Sql server SSIS包满表加载缓慢
我们有一个SSIS包,开发团队显然将其称为“慢”。因为他们没有一个使用SSIS ETL的人,所以作为DBA,我尝试深入研究它。以下是我找到的信息: SQL Server于2014年升级至2017年,因此它具有两个版本的SSISql server SSIS包满表加载缓慢,sql-server,performance,ssis,parallel-processing,etl,Sql Server,Performance,Ssis,Parallel Processing,Etl,我们有一个SSIS包,开发团队显然将其称为“慢”。因为他们没有一个使用SSIS ETL的人,所以作为DBA,我尝试深入研究它。以下是我找到的信息: SQL Server于2014年升级至2017年,因此它具有两个版本的SSI 他们将大小为200 GB的SQL Server表加载到SSI中,然后使用命令行压缩功能将数据压缩到平面文件中 数据流任务简单地点击一个select*from视图——该视图只包含没有其他连接的表 在进行故障排除时,我发现在SQL Server上几乎没有任何负载,这可能是因为s
select*from视图
——该视图只包含没有其他连接的表在这两种情况下,我都试图查看它们调用的DTEXEC的版本,并且它们都调用相同的版本。因此,我无法理解为什么会这么慢。表上的任何索引都可能会减慢加载速度。如果有任何索引,请尝试在加载之前删除它们,然后在加载之后重新创建它们。这还将更新索引统计信息,这将因大容量插入而扭曲。您是否看到SQL server也在使用其他内核进行其他查询?如果没有,可能有人使用了以下设置: 在“服务器配置设置”下检查这些选项:
- 最大平行度
- 并行性的成本阈值(服务器配置设置)
- 处理器是否与CPU密切相关
- DefaultBufferSize:默认值为10MB,最大可能为2^31-1字节
- DefaultBufferMaxRows:默认值为10000
- 您可以设置AutoAdjustBufferSize,以便根据DefaultBufferMaxRows自动计算DefaultBufferSize
- :这定义了一个包可以使用多少线程
- :数据流引擎可以使用多少线程
- 还可以尝试在SQL代理使用的同一个代理用户下运行
,以查看此帐户与您的帐户是否得到不同的结果。您可以使用dtsexec
打开该用户下的命令窗口,然后执行runas/user:。。。cmd
dtexec
- 尝试将SQL代理中使用的代理用户更改为新的代理用户,看看是否有帮助。或者尝试在需要访问的目录中授予提升权限
- 尝试将包保存在文件系统中,并直接从SQL代理通过
执行,而不是使用dtexec
catalog。开始执行
- 不是您的情况,而是针对其他读者:如果您有“执行包任务”,请确保要执行的子包通过ExecuteOutOfProcess属性设置为在进程内运行。这只是减少了系统的开销
into dbo.Destination SELECT * from openrowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=D:\YourCsv.csv;Extensions=csv;','select * from YourCsv.csv') File;