我正在新安装的Windows 7桌面上开发.NET 4.0应用程序。在该应用程序中,对远程数据库的查询速度非常慢。同样的应用程序在我的笔记本电脑上运行得相当快,我已经用完了。我现在使用的桌面比笔记本电脑快很多。我正在使用VPN连接来连接远程数据库服务器(与笔记本电脑上的相同)。它在IIS和Cassini中都很慢。
我应该补充说,应用程序正在使用Entity Framework进行数据访问。
有谁知道问题可能是什么?
更新1: 好的,这真的很奇怪。我在笔记本电脑和台式机上查看了SQL Server Profiler中的查询。他们都是一样的。但是在我的桌面上,查询执行的时间越来越长。所以我在桌面上启动了Management Studio并执行了我从SQL Server Profiler中获取的查询。它运行得非常快(不到一秒钟)。但是当我再次执行它需要1秒钟。然后,2秒,然后是4(见模式?)。我不能为我的生活找出导致这种情况的原因。这是查询:
select top (2) [Extent1].[RequestID] AS [RequestID],
[Extent1].[RequestDate] AS [RequestDate],
[Extent1].[RequestTitle] AS [RequestTitle],
[Extent1].[RequestTypeID1] AS [RequestTypeID1],
[Extent1].[RequestTypeID2] AS [RequestTypeID2],
[Extent1].[SubjectMatterID1] AS [SubjectMatterID1],
[Extent1].[SubjectMatterID2] AS [SubjectMatterID2],
[Extent1].[ProviderID] AS [ProviderID],
[Extent1].[Description] AS [Description],
[Extent1].[Notes] AS [Notes],
[Extent1].[RequestedBy] AS [RequestedBy],
[Extent1].[OrganisationID] AS [OrganisationID],
[Extent1].[ProgramID] AS [ProgramID],
[Extent1].[StatusID] AS [StatusID],
[Extent1].[MethodID] AS [MethodID],
[Extent1].[StaffID] AS [StaffID],
[Extent1].[TopicID] AS [TopicID],
[Extent1].[RequestCreatedBy] AS [RequestCreatedBy],
[Extent1].[RequestCreatedOn] AS [RequestCreatedOn],
[Extent1].[RequestModifiedBy] AS [RequestModifiedBy],
[Extent1].[RequestModifiedOn] AS [RequestModifiedOn],
[Extent1].[RequestedByExtraID] AS [RequestedByExtraID]
FROM [dbo].[Request] AS [Extent1]
但是等等!它变得怪异!以下查询总是花费相同的时间(少于一秒),无论我多久执行一次:
select top (2) * From request
我浪费了大量的时间。如果有人有任何指示,你将永远在我的酷人书中。
更新2 如果我在管理工作室中“包含实际执行计划”,无论我多久执行一次,查询总是非常快。
答案 0 :(得分:3)
最后,经过几天的尝试各种不同的设置,甚至从头开始重新安装所有东西(包括Windows),我以某种方式想出了问题。这是 - 我仍然无法相信这一点 - 网卡设置。我禁用了“IPv4 Checksum Offload”,“Large Send Offload(IPv4)”,“TCP Checksum Offload(IPv4)”和“UDP Checksum Offload(IPv4)”。现在它很好很快......
答案 1 :(得分:0)
嗯,我在我们的应用程序中经历过类似的事情。请注意,ManagementStudio结果可能会导致您得出错误的结论。连接上有一个参数ARITHABORT,默认情况下在MS中设置为ON,但是从你的应用程序中它默认为OFF。
<强>链接强>:
答案 2 :(得分:0)
在数据库服务器上运行跟踪,并查看实际对其运行的实际SQL语句。我有一种感觉,你的EF生成差异SQL,而不是你在管理工作室。您可能需要对其进行优化。 VPN连接也可能是问题的一部分。
答案 3 :(得分:0)
同样的事情发生在我身上,我花了好几天试图解决它。从我的工作站到实体框架和ADO.NET到远程SQL Server的查询运行速度非常慢,但在所有其他开发人员的工作站上运行速度都很快。禁用Large Send Offload V2(IPv4)可以立即解决问题。