linq를 사용하여 데이터베이스에서 WCF 서비스의 직렬화 된 결과를 가져 오려고합니다. DB를에wcf serialize linq 결과가 대량의 SQL Server로드를 초래합니다.
표는 어느 정도 표준화하고 난 처음에 단지 스콧 Landford의 블로그처럼, Data.Linq.DataLoadOptions를 사용하여 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 Server에 100 % CPU를 사용하는 정도로 오버로드되어 클라이언트에 대한 응답이 늦어지는 문제가 발생합니다. 나는 dlo.LoadWith 호출을 제거하고 응답은 의미있는 시간에옵니다.
이 문제를 해결하고 SQL 서버를 과부하하지 않는 방법에 대한 제안 사항이 있습니까?
스키마, 인덱스, 샘플 데이터하시기 바랍니다. 기본적으로 당신은 열악한 디자인을 가지고 있습니다 ... – gbn
이런 종류의 상황에서 좋은 접근 방법은 무엇입니까? 그게 내가 알아 내려고하는거야. – TheBoyan
우리가 테이블, 인덱스 및 샘플 데이터를 사용하여 호출 한 SQL을 보여줍니다 ... 우리가 추측 할 수만 있다면 ... – gbn