我有两个数据库(DB1&DB2:两个数据库是相同的,DB2是从DB1的备份创建的)。当我在这两个数据库上运行存储过程SP1时,它需要大约2秒钟才能在这两个数据库上为我提供输出(select语句)。
现在的问题是当我从服务中指向这些数据库并尝试使用DataAdapter.Fill方法时,它会在这两个数据库上始终给出不同的时间(在DB1上为54-63秒,在DB2上为42-44秒)。请注意,我使用同一服务来指向这些数据库,因此它不可能是服务的行为/性能。现在我的问题是:
这可能是什么原因?欢迎任何建议,我应该查看什么?
现在的问题是当我从服务中指向这些数据库并尝试使用DataAdapter.Fill方法时,它会在这两个数据库上始终给出不同的时间(在DB1上为54-63秒,在DB2上为42-44秒)。请注意,我使用同一服务来指向这些数据库,因此它不可能是服务的行为/性能。现在我的问题是:
这可能是什么原因?欢迎任何建议,我应该查看什么?
帮助信息:
两个数据库位于不同的
服务器
上(配置相同),但在SQL Server Management Studio
上执行SP
在两个DB
上花费的时间相同,因此我排除了DB
server
性能的可能性。网络延迟可能是一个因素,但很不可能,因为这两个servers
位于同一网络上,实际上位于同一物理位置。这是我要检查的最后一个选项。一些其他服务正在
DB1
上使用SQLDependency
。它们持续填充DataAdapter(s)
,这可能是我的DataAdapter
fill
方法变慢的原因吗?(不太可能,因为我猜测)
如下所示是填充DataSet
的代码:
select
查询中是否包含带参数的where
子句? - Ivan StoevExecuteReader
)或物化方面。如果大部分时间都在第一部分中,则应查看查询计划、参数嗅探等。 - Ivan Stoev