2013-07-10 1 views
1

ORM으로 EntitySpaces를 사용하는 프로젝트에서 작업하고 있습니다.EntitySpaces에서 저장 프로 시저를로드하는 데 SQL 클라이언트보다 40 배 더 오래 걸림

당신은 저장 프로 시저를 호출하여 컬렉션을로드 ItemCollection의 단순화 된 방법을 참조 아래 :

declare @p5 int 
set @p5=485 
exec [ItemsStoredProcedure] @Param1=4,@Param2=N'41',@Param3=N'SomeValue',@Param4=0,@[email protected] output,@Param5=1,@Param6=25 
select @p5 
: SQL Server 프로파일 러 나는 그 데이터베이스에이 호출의 결과입니다 참조 사용

public partial class ItemCollection : esItemCollection 
{ 
    public bool LoadItemsUsingSomeStoredProcedure(string aLotOfAttributes, out int totalCount) 
    { 
     // Set a lot of parameters 
     esParameters parameters = new esParameters(); 
     // ... 

     bool result = Load(esQueryType.StoredProcedure, "ItemsStoredProcedure", parameters); 

     totalCount = (int) paramTotalCount.Value; 

     return result; 
    } 
} 

약 200 초이 완료됩니다.

하지만 SQL Management Studio (로컬 및 원격)에서 동일한 SQL 조각을 실행하면 약 4 ~ 5 초가 걸립니다.을 완료하십시오.

EntitySpaces 호출이 SQL 클라이언트의 호출보다 완료되는 데 약 40 배 더 오래 걸리는 아이디어가 있습니까? 어떤 아이디어를 어떻게 디버그/개선 할 수 있습니까?

추 신 : EntitySpaces를 대체하는 것이 나의 WANT 목록에서 높지만 언제나 그렇듯이 클라이언트가 "작동하는"프로그램을 리팩토링하는 데 한 달의 개발을 보내도록 설득하는 것은 정말로 어렵습니다 ... 그 옵션이 꺼져 있습니다. .

+0

200 초; ES를 통해 SQL 부분을 타이밍을 잡거나, 구체화 등을 포함한 전체 스택을 타이밍합니까? 그것이 SQL 부분이라면, 다른'SET' 옵션이 범인이라고 의심 할 수 있습니다 (예 : 계산 된 + 지속 + 색인 된 열을 깨뜨려 테이블 스캔을 강제 실행하고 재평가). 그러나 ES materialization이 느릴 수도 있습니다. 또는 부풀어 오른 컨텍스트를 가지고 있습니다 (즉 컨텍스트를 분리하고 슬림하게 유지하는 대신 많은 컨텍스트로 많은 컨텐트로드) –

+0

실제로 SQL Server 프로필러에서 볼 수 있듯이> 200 초가 SQL 부분의 타이밍입니다. 다른 'SET'옵션으로 자세히 설명 할 수 있습니까? –

+0

또 다른 이유는 SQL Management Studio가 첫 번째 X 항목 만 가져올 수 있기 때문입니다. –

답변

0

모든 응용 프로그램에서 알려진 문제인 Visual Studio에서 EntitySpaces를 실행하지 마십시오. EntitySpaces는 SqlClient에 거의 모든 시간을 거의 추가하지 않으며 가장 빠른 ORM을 나타냅니다.

http://www.entityspaces.net/www.entityspaces.net/blog/2010/08/26/The%20EntitySpaces%20ORMBattleNET%20Performance%20Numbers.aspx.html

+0

Visual Studio에서 실행하고 있지 않습니다. 프로덕션 데이터베이스에서 SQL Server Profiler를 사용하여 타이밍을 수행했습니다. 어쨌든 EntitySpaces를 떠나서 EntityFramework를 사용하기 때문에 더 이상 적합하지 않습니다. –

+0

괜찮 았지만 레코드의 경우 성능 번호는 http://www.entityspaces.net/www.entityspaces.net/blog/2010/08/26/The%20EntitySpaces%20ORMBattleNET%20Performance%20Number.aspx .html EF/LINQ에 대한 EntitySpaces 동적 쿼리 *가 마음에 들면 (EF가 매우 느리고 제한적이므로 항상 선택 항목에 모든 열을 다시 가져와야합니다.) 이것을 사용할 수 있으며 NuGet에서 사용할 수 있습니다. http://brewdawg.github.io/Tiraggo를 참조하십시오.EF/ 쿼리 클래스를 몇 초 만에 설치하고 생성합니다. EF 모델 클래스를로드합니다. –

+0

이 숫자는 3 년 전에 작성된 것 같습니다. 그래서 나는 맹목적으로 신뢰하지 않습니다. 또한 EntitySpaces가 죽어 가고있는 것 같습니다. 웹 사이트가 불완전하고, 포럼을 검색 할 수 없거나, 적절한 문서가 부족합니다 (ES 문제를 인터넷으로 검색하여 관련 결과가 거의 없음). EF는 Microsoft 제품이므로 세 번째로 많이 지원됩니다 -party frameworks/tools/etc 나는 그것이 안전한 내기라고 생각한다. 조금 느린 경우 하드웨어를 업그레이드 할 것입니다. 하드웨어는 여전히 개발 (디버깅) 시간보다 훨씬 저렴합니다. –

관련 문제