[英]DataAdapter.Fill performance anomaly
我有两个DataBases
( DB1
和DB2
:两个DB都相同, DB2
是从DB1
的备份创建的)。 当我运行一个存储过程SP1
两个DBs
,大约需要2秒钟,给我一个输出( select
两个语句) DBs
。
现在的问题是,当我指出这些DBs
从service
,并尝试使用DataAdapter.Fill
方法,它给了我不同的时间(54 -上63秒 DB1
和42 - 43秒 , DB2
)两个DBs
一致。 注意到我使用相同的服务来指向DBs
因此它不能是服务行为/性能。 现在我的问题是:
这可能是什么原因? 欢迎提出任何建议, 我应该研究什么?
帮助信息:
这两个数据库都在不同的
servers
(相同配置),但由于执行SP
上的SQL Server Management Studio
同时服用两个DBs
,所以我排除的可能性DB
server
性能。 网络延迟可能是一个因素但是极不可能,因为两个servers
在同一网络上,实际上在同一物理位置。 这是我最后检查的选项。其他一些服务正在使用
SQLDependency
ONDB1
。 哪个一直填充DataAdapter(s)
,这可能是我的DataAdapter
fill
方法减速的原因吗? (我猜不太可能)
根据以下评论中的要求,填充DataSet
代码如下:
PS:上面提到的时间是上图中突出显示的代码行的执行时间。
您是否尝试过不使用SQL.StoredProcedure并将其作为一行SQL运行:“exec dbname.dbo.storedprocname params”。
它的工作要多一些,因为你必须循环参数才能在结尾处添加到字符串中,但是它是一个SQL字符串,它不关心你在做什么,它在幕后做了什么搞笑。 应该有类似的时间,如果失败,请尝试检查存储过程正在使用的db表等索引等。
第一步 - 重建或重组索引。 这通常是SQL Server最常见的性能问题,并且易于修复。 有时重启SQL Server这也很重要
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.