【问题标题】:Time to send a query to Sql Server in asp.net MVC是时候在 asp.net MVC 中向 Sql Server 发送查询了
【发布时间】:2012-06-24 04:06:00
【问题描述】:

假设我有一个简单的 ASP.NET MVC Web 应用程序和一个(本地)Sql Server。作为 ORM,我使用的是 Entity Framework 4.3.1

为了弄清楚 ORM 端需要多长时间,我准备了一个简单的选择查询并打印出时间戳,例如

 ...
 using (var context = Entities()) 
 {
     (1) timestamp1
     var list = context.Database.SqlQuery<Entity>("select * from entities").ToList();
     (2) timestamp2
 }
 ...

同时,我查看了 Sql Server Profiler 以查看查询开始/结束时间。

结果如下(注意只显示毫秒,因为查询处理时间小于1秒)

  1. 时间戳1:149毫秒
  2. 查询开始时间:197 毫秒
  3. 查询结束时间:198 毫秒
  4. 时间戳2:199毫秒

问题)为什么在开始查询之前花了这么多时间(48 毫秒,197-149 毫秒)?有什么办法可以减少吗?

谢谢!

【问题讨论】:

  • 您不认为建立与数据库的连接、验证权限等可以瞬间完成,是吗?
  • 即使在时间戳 1 之前建立连接,也测量了类似的性能

标签: sql-server entity-framework-4


【解决方案1】:

ADO.NET EF 需要自行初始化,您会发现将来的查询执行时不会有太多延迟。另外不要忘记 SQL Server Profiler 只记录查询的执行时间,而不是与网络传输和其他开销相关的时间。

激活 SQL Server 可能还会导致速度变慢 - 您说它在您的计算机上是本地的,因此 SQL Server 的组件可能被调出到磁盘。在专用 SQL Server 机器上运行时性能如何?

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多