2008-08-07 4 views
17

C 및 LINQ를 사용하여 데이터베이스 성능 오버 헤드가 SQL Server 2008 백 엔드와 함께 대부분 저수준 C로로드 된 사용자 지정 최적화 된 쿼리와 비교할 때 얼마나됩니까?LINQ를 사용할 때 데이터베이스 성능 오버 헤드는 얼마나됩니까?

저는 데이터 집약적 인 프로그램이 있고 화면 당 적어도 한 번 데이터 새로 고침 또는 업데이트를 수행하고 50-100 명의 동시 사용자가있는 경우를 특별히 생각합니다.

답변

1

쿼리를 작성하는 사람이 수행중인 작업을 알고 있고 생성 된 쿼리가 최적인지, 필요한 인덱스가 적절한 지 확인하기 위해 일반적인 예방 조치를 취하는 경우 오버 헤드가 최소화됩니다. 즉, 데이터베이스 영향은 동일해야합니다. 앱 사이드에는 최소한이지만 무시할 수있는 오버 헤드가 있습니다.

그건 ... 여기에는 예외가 하나 있습니다. 단일 쿼리가 여러 집계를 생성하면 L2S 공급자는이를 집계 당 하나의 하위 쿼리로 큰 쿼리로 변환합니다. 대형 테이블의 경우 쿼리의 db I/O 비용이 쿼리의 새 집계마다 커지므로 상당한 I/O 영향을 미칠 수 있습니다.

물론 이에 대한 해결 방법은 집계를 저장된 proc 또는 view로 이동하는 것입니다. Matt Warren은 이러한 쿼리를보다 효율적으로 번역하는 대체 쿼리 공급자에 대한 몇 가지 샘플 코드를 제공합니다.

자료 :

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211

http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx

2

감사합니다. 요약하면 LINQ to SQL은 컴파일 된 select를 사용할 수있는 경우 새로운 버전의 데이터베이스 성능 오버 헤드가 크지 않을 것입니다. 그리고 느린 업데이트 기능은 실제로 날카로운 점이 없으면 빠를 가능성이 큽니다. 전문가가 대부분의 코딩 작업을 수행합니다.