2011-03-29 45 views
0

我正在构建一个RIA域服务,需要在有大量数据的表上执行查询。 通过对此进行研究,我意识到表格大小可能会成为一个问题。504在RIA域服务中有很大的结果集

例如:

return this.ObjectContext.Logs; 

失败,504 ERR,而:

return this.ObjectContext.Logs.Take(10); 

作品。

正如您所看到的,我正在处理日志表,其中包含一个“用户名”字段。我需要从表中检索所有不同的用户名。所以我成立了这个方法:

public IEnumerable<string> GetUsers() 
    { 
     var users = (from l in this.ObjectContext.Logs 
        select l.Username).Distinct().Take(10); 

     return users; 
    } 

我想执行的服务器端的所有必要的行动,以减少传输的信息(以及相对延迟)到最低程度。

但是,即使使用该查询,我也会得到504错误。在Fiddler中,我看到:“ReadResponse()失败:服务器没有为此请求返回响应。”

最初我认为这是一个传输问题(可能传输数据的大小太大或太大),所以我在“返回用户”上设置了一个断点。我运行了代码,调试器停在“返回用户”行。我点击了“结果视图”,但在那一点上它无法显示任何结果,只是显示错误。

我想在这里报告错误,但突然间Visual Studio不再停止在DomainService断点上,只停留在Silverlight项目的断点上。我实际上正在调查这件事,因为它似乎不再调用域服务(小提琴手不再显示任何对ria域服务的调用)。

有没有人可以帮助我解决这些问题?我真的很努力让这个工作。

在此先感谢, 干杯, 赞布罗塔

+0

我会运行SQL事件探查了不同的用户名查询,以检查你的查询花费多长时间。如果时间太长,可能需要考虑该表上的索引。 – Rus 2011-03-29 13:15:08

+0

确保Web项目设置为启动项目,并且RIA调试仍处于启用状态。 – 2011-03-29 13:45:14

回答

0

好了,过了一段时间,我在这里提供一个答案,我自己的问题。

RIA或EF等没有问题,长时间的操作会影响时间和大小的限制,这是正常的和正确的。就我而言,我们正在讨论一个包含32M行的表。

我们使用的是PostgreSQL 9.0。该表已被编入索引,但当返回的行数增加时,不使用索引。为了克服我们遇到的性能问题,我们对数据库和应用程序进行了重大的重构。表格已经被分区,带有计数器的支持表被创建并且现在被用于代替COUNT操作,启用自动真空,增加了所有最有意义和使用的搜索字段上的索引的数量,以及 - 重要的 - 查询被审查为了减少返回的记录集。

在开发环境(只有少量资源可用)上运行的新应用程序即使数据库每月增长2-4M行,也会在几秒钟内解决任何请求。

就是这样。我希望这可以帮助别人。

干杯, Gianluca。

1

可以选择RIA服务的响应的大小: 编辑您的配置文件:(maxItemsInObjectGraph)

<system.serviceModel>  
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true" /> 
    <services> 
     <service name="ModuleDossier.DSDossier" behaviorConfiguration="DSDossier_BehaviorConfig"></service>  
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="DSDossier_BehaviorConfig"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
     </behavior> 
     <behavior name="DSDossier_BehaviorConfig1"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
相关问题