我想从使用linq的数据库的WCF服务获得序列化结果。wcf序列化linq结果导致大量的sql服务器负载
在数据库中的表进行归一化在一定程度上,我回用的,我最初使用Data.Linq.DataLoadOptions,就像斯科特Landford的博客与LINQ查询检索以及其他一些数据:http://codeexperiment.com/post/Returning-LINQ-to-SQL-Entities-From-WCF.aspx
这里是我的代码的一部分是相关的:
ServerDALDataContext db = new ServerDALDataContext();
System.Data.Linq.DataLoadOptions dlo = new System.Data.Linq.DataLoadOptions();
// get COMPETITOR_ENTRies data along with COMPETITION
dlo.LoadWith<COMPETITION>(e => e.COMPETITOR_ENTRies);
// get dividends for competitors along with COMPETITOR_ENTRies
dlo.LoadWith<COMPETITOR_ENTRY>(e => e.DIVIDENDs);
db.LoadOptions = dlo;
// retrieve MEETING data from database
var competitions = (from c in db.COMPETITIONs
select c)
.AsEnumerable()
.Where(c => c.CONTROL_UPDATE_DATA.FOR_UPDATE);
&& c.COMPETITION_DATETIME.Value.Date == dateFrom.Date);
// return as list
return competitions != null ? competitions.ToList() : null;
还存在占用业务,每10秒左右就可以发送异步请求WCF服务的客户端应用。
问题是,当使用它时,它实际上会超载SQL服务器以至于它始终使用100%的CPU,导致对客户端的响应迟到。我删除了dlo.LoadWith的调用和响应来了一个有意义的时间。
关于如何解决这个问题的任何建议,而不是重载SQL Server那么多?
架构,索引,采样数据请。基本上你有糟糕的设计... – gbn 2010-07-09 12:05:28
在这种情况下,什么是一个好方法?这就是我想要发现的。 – TheBoyan 2010-07-09 12:18:16
向我们展示用表,索引和示例数据调用的SQL ...没有,我们会猜测... – gbn 2010-07-09 12:21:59