2017-07-24 267 views
1

我有一个SSIS包作为项目的一部分。当通过SSIS从我的机器运行时,处理15M记录大约需要15分钟。 一旦部署到服务器上的目录并运行完毕,现在已经超过2个小时。SSIS查询在目录作业中运行非常缓慢。 wait_type:ASYNC_NETWORK_IO

这个特定的软件包正在服务器本身上移动数据(处于暂存状态),所以没有网络瓶颈。

,这里是来自SP_WHO3一些统计数据:

CPU_TIME:484482

requested_memory_kb:2469520

granted_memory_kb:2469520

ideal_memory_kb:14508048

query_cost:85.3073051231772

wait_type:ASYNC_NETWORK_IO

查看服务器上的资源监视器,我发现磁盘I/O非常高(当然),大部分是系统进程,大约为190,000,000 B/Sec,进入远第二是在sqlserver.exe〜300000 B /秒

封装被配置成与BufferTempStoragePath设定为C:\ TEMP \ DefaultBufferMaxRows = 10,000 DefaultBufferSize = 10485760

我应该去哪里寻找上以找到缓慢执行的根本原因?

谢谢!

回答

1

ASYNC_NETWORK_IO是不消耗从SQL足够

部署了包你是从查询数据在同一台服务器的快速来临行的客户端代码引起的? 因为处理这些行需要SQL服务器可能使用的内存。

在PC上本地运行会分离出这个负载。

“系统进程,大约190,000,000 B /秒”也可能因为内存不足而导致磁盘和内存抖动,导致内存分页过多。

就我个人而言,我总是会使用一个单独的专用ETL(SSIS)服务器。

但是,我会检查您的SQL Server最大内存并减少它以允许运行SSIS包。

+0

这是在专用的ETL服务器上。对不起,我没有澄清这一点。 此软件包的源是镜像数据库,其目标是分段数据库。全部在同一台服务器上。 为什么REDUCING max memory有助于解决这个问题? (服务器有16GB内存,其中约90%正在使用(这是一个开发服务器)) – Ethan1701

+0

@ Ethan1701我在同一台服务器上假定了SSIS和SQL Engine – gbn