Performance 具有Sql Azure over net tcp的实体框架性能缓慢

Performance 具有Sql Azure over net tcp的实体框架性能缓慢,performance,entity-framework,azure,azure-sql-database,nettcpbinding,Performance,Entity Framework,Azure,Azure Sql Database,Nettcpbinding,嗨,伙计们, 所以我这里有一个很大的性能问题。我有一个WPF应用程序,它连接到一个在工作者角色内部运行的服务。该服务使用带有全双工的网络tcp绑定。数据访问层都在我在服务中引用的库中。因此,当我的服务想要获取数据时,它会使用该库中的方法。该库使用映射到SQLAzure数据库的EF4.1。 我面临的问题是,像从数据库获取用户这样的查询需要4秒以上的时间。我还有一个http服务(由Silverlight应用程序使用),它使用相同的数据访问库,相同的查询需要115ms,这是正常的。 当我使

嗨,伙计们,

所以我这里有一个很大的性能问题。我有一个WPF应用程序,它连接到一个在工作者角色内部运行的服务。该服务使用带有全双工的网络tcp绑定。数据访问层都在我在服务中引用的库中。因此,当我的服务想要获取数据时,它会使用该库中的方法。该库使用映射到SQLAzure数据库的EF4.1。

我面临的问题是,像从数据库获取用户这样的查询需要4秒以上的时间。我还有一个http服务(由Silverlight应用程序使用),它使用相同的数据访问库,相同的查询需要115ms,这是正常的。

当我使用NetTCP服务时,实体框架是否有问题?我真的不知道问题出在哪里,因为通过http服务,所有查询的行为都很正常。

您是否可能对实体使用延迟加载而不是急切加载?Internet上的延迟加载速度要慢得多,因为它会导致更多到SQLAzure的往返,这将是本例中的瓶颈。快速加载只需一次往返即可获得所有数据


参考资料:

因此,关于这个问题,我把范围缩小到与工作者角色有关的部分。我还有另一个工作者角色,它使用与EF4.1相同的库在azure sql数据库上执行操作。此工作角色还存在有关查询的性能问题。我真的很困惑…您的角色和SQL数据库在同一个关联组中吗?你一定要确保你在同一个数据中心工作。我也会考虑实现一个“存根”服务方法,它不需要数据访问来查看在某个地方有问题的NETTCP绑定。是的,角色与数据库具有相同的亲和力。嗯,我认为问题不在于绑定,因为正如我上面所说的,我有另一个角色,它不承载服务,它只执行数据库操作,性能问题也出现在这个角色中。两个工作者角色都有相同的问题,只有webrole(它托管了Silverlight Web应用程序和basichttp服务)工作正常,没有问题。在所有3个角色中,我使用相同的dataaccess库,具有相同的操作,只是当我从工作者角色调用它们时,操作非常慢。查询返回多少条记录?我发现使用SQLAzure时,如果查询返回的行数超过几百行,那么查询速度会非常慢?我们发现,即使在同一个数据中心中,每次查询的延迟也可能达到50毫秒或更差——因此,如果您有一段写得很差的代码在循环中执行查询,您可能会获得令人震惊的性能。将负载转移到数据库。我认为这与延迟加载无关。我也尝试过这样做,将延迟加载设置为false作为上下文,但没有效果。正如我所说,我有一个web角色和一个服务,它使用与worker角色相同的dataaccess库工作时不会出现性能问题。只有在使用工作者角色时,我才面临这个问题。