Windows Server 2008 R2 上的 LINQ To SQL 速度慢
我们刚刚将一个 .Net 应用程序从 Windows 2003 Server 迁移到虚拟 Windows Server 2008 R2(64 位,VMWare)。
该应用程序是一个在 .Net Framework 4.0 32 位上运行的简单控制台应用程序,它运行不同的作业来选择、修改业务数据并将其保存到数据库。对于数据库,我们使用 SQL 2008 R2。
由于我们在 Windows Server 2008 R2 上运行该应用程序,我们发现使用 LINQ to SQL 执行 Select 语句比我们之前使用的 Windows Server 2003 上慢。我们使用简单的 LINQ 查询进行检查,在 Win 2008 上花费了大约 500 毫秒。
我们使用 System.Data.Linq.DataContext 并使用方法 GetTable<>() 从数据库获取对象。
为了比较持续时间,我们花了从创建数据上下文到从 DB 对象映射回应用程序中的 .Net 对象的时间。 请参阅代码:
System.Data.IDbConnection testConnection;
System.Data.Linq.Mapping.MappingSource testMappingSource;
...
...
using (System.Data.Linq.DataContext dc = new System.Data.Linq.DataContext(testConnection, testMappingSource))
{
dc.DeferredLoadingEnabled = false;
return = (from dbObject in dc.GetTable<TestTable>()
select dbObject).FirstOrDefault();
}
在 Windows 2008 R2 Server 上,安装了 .Net Framework 4.0,并在服务器功能中启用了 .Net Framework 3.5.1 功能。
该应用程序安装在三个 Windows 2003 Server 上的三个不同阶段(开发、测试、生产)。现在它运行在三个虚拟的Windows 2008 R2 Server 上。我们在所有三个 Windows 2008 R2 Server 上都遇到相同的问题。我们甚至在物理 Windows 2008 R2 Server 上对其进行了测试;那里有同样的问题。
有谁知道是什么导致了这种差异?解决这个问题的方法可能是什么?
预先非常感谢! 问候 汤姆
We just moved one of our .Net applications from a Windows 2003 Server to a virtual Windows Server 2008 R2 (64Bit, VMWare).
This application is a simple console application running on .Net Framework 4.0, 32Bit, that runs different jobs to select, modify and save business data to a database. For the database we use SQL 2008 R2.
Since we run the application on the Windows Server 2008 R2 we recognized, that the execution of Select-Statements with LINQ to SQL are slower than on the Windows Server 2003 we used before. We checked it with a simple LINQ Query, and that tooks about 500 milliseconds longer on Win 2008.
We use the System.Data.Linq.DataContext and get Objects from the Database with the Method GetTable<>().
To compare the duration we took the time from creating the datacontext until the mapping from the DB-Objects back to the .Net-Objects in the application.
See the code:
System.Data.IDbConnection testConnection;
System.Data.Linq.Mapping.MappingSource testMappingSource;
...
...
using (System.Data.Linq.DataContext dc = new System.Data.Linq.DataContext(testConnection, testMappingSource))
{
dc.DeferredLoadingEnabled = false;
return = (from dbObject in dc.GetTable<TestTable>()
select dbObject).FirstOrDefault();
}
On the Windows 2008 R2 Server, the .Net Framework 4.0 is installed, and in the server features the .Net Framework 3.5.1 Features are enabled.
The application was installed on three different stages (Dev, Test, Production) on three Windows 2003 Server. Now it runs on three virtual Windows 2008 R2 Server. We have the same Problem on all three Windows 2008 R2 Server. And we even tested it on a physical Windows 2008 R2 Server; same Problem there.
Has anyone an idea what causes this difference? And what may be a solution to resolve this problem?
Thanks a lot in advance!
Greets
Tom
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论