bcp queryout可怕的性能

时间:2014-03-14 12:27:13

标签: sql-server-2008-r2 bcp

我正在使用SQL Server 2008 R2。我有一个通过bcp shell运行xp_command的存储过程。在包含数据库副本的笔记本电脑上,具有50000条记录的作业几乎是即时的,bcp性能为每秒71K行。

我在服务器上运行完全相同的存储过程,需要1小时51分钟,bcp性能是每秒7行(因此速度慢10,000倍)。选择数据的查询在服务器BTW上运行一秒钟。这发生在上周,我们重新启动了SQL Server实例,它在服务器上再次运行得很快。大约5天后,性能再次变得非常慢,但重新启动SQL实例并没有帮助。

我的命令是:

bcp "exec DBNAME.dbo.SPNAME 224,1 "  
    queryout "\\Server\path\OUTPUT\11111.txt" -c -t\t -Usa -P"PASSWORD" -SSQLSERVER

如果我运行活动监视器,我会看到我的存储过程进程并显示RUNNABLE。

服务器位于具有4核和28GB RAM的VM上。

如果我从dos shell运行相同的bcp命令,我会得到同样的结果。

我现在不知所措。有人有任何建议吗?

TIA

标记

1 个答案:

答案 0 :(得分:0)

要回答“在哪里看”的问题,并且由于您要完成的任务涉及分布式资源(我在这里假设是因为您使用的是UNC路径)...您必须研究环境之间的差异,当比较服务器和笔记本电脑之间的执行情况时...几乎所有内容。

存储(和可用存储) CPU(和可用的cpu) 网络(和可用带宽) 内存(和可用内存) SQL Server版本/更新 维护时间表(笔记本电脑可能没有任何维护时间表) 并发活动(笔记本电脑可能没有活动)

您似乎已处理的数据。您可以确认数据/数据库对象相同吗?这是您正在笔记本电脑上使用的还原数据库(是从服务器还原吗?),还是您已经手动检查了表和索引(如果不是从服务器还原的话)?

如果不还原,笔记本电脑的数据量会减少吗?

要进行故障排除,您不仅需要活动监视器。您将需要性能监视器。

这是从一段时间以前开始的(不确定为什么这样的事情不会在这里过期,但是哦)。