繁体   English   中英

DataAdapter.Fill性能异常

[英]DataAdapter.Fill performance anomaly

我有两个DataBasesDB1DB2 :两个DB都相同, DB2是从DB1的备份创建的)。 当我运行一个存储过程SP1两个DBs ,大约需要2秒钟,给我一个输出( select两个语句) DBs

现在的问题是,当我指出这些DBsservice ,并尝试使用DataAdapter.Fill方法,它给了我不同的时间(54 -63秒 DB142 - 43秒DB2 )两个DBs一致。 注意到我使用相同的服务来指向DBs因此它不能是服务行为/性能。 现在我的问题是:

这可能是什么原因? 欢迎提出任何建议, 我应该研究什么?

帮助信息:

  1. 这两个数据库都在不同的servers (相同配置),但由于执行SP上的SQL Server Management Studio同时服用两个DBs ,所以我排除的可能性DB server性能。 网络延迟可能是一个因素但是极不可能,因为两个servers在同一网络上,实际上在同一物理位置。 这是我最后检查的选项。

  2. 其他一些服务正在使用SQLDependency ON DB1 哪个一直填充DataAdapter(s) ,这可能是我的DataAdapter fill方法减速的原因吗? (我猜不太可能)

根据以下评论中的要求,填充DataSet代码如下:

DataSet填充

PS:上面提到的时间是上图中突出显示的代码行的执行时间。

这听起来非常像查询计划问题。

Erland Sommerskog撰写了一篇关于此类问题的优秀文章, 申请速度慢,SSMS速度快?

我的第一个猜测是“ 默认设置 ”,但它也可能是其他问题之一。

您是否尝试过不使用SQL.StoredProcedure并将其作为一行SQL运行:“exec dbname.dbo.storedprocname params”。

它的工作要多一些,因为你必须循环参数才能在结尾处添加到字符串中,但是它是一个SQL字符串,它不关心你在做什么,它在幕后做了什么搞笑。 应该有类似的时间,如果失败,请尝试检查存储过程正在使用的db表等索引等。

第一步 - 重建或重组索引。 这通常是SQL Server最常见的性能问题,并且易于修复。 有时重启SQL Server这也很重要

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM