가 LINQ to SQL 하여 더욱 빠른 응답 시간을 제공하여 사용하는 것보다 ado.net 고 ole db?

StackOverflow https://stackoverflow.com/questions/72168

문제

LINQ 단순화 데이터베이스 프로그래밍 의심 할 여지없이,하지만 그것은 단점을 가지고?인라인 SQL 중 하나가 필요 합과 소통하는 데이터베이스에서 특정 방법으로 열리는 데이터베이스입니다.인라인 SQL 수도 있어야 합 구문을 확인,계획,구축한 후 실행하는 소중한 주기입니다.저장 프로시저는 또한 탄탄한 기준에서 중대한 데이터베이스 응용 프로그램 프로그래밍입니다.많은 프로그래머가 알고있는 데이터 레이어 단순화하는 개발을,그러나,어느 정도의 LINQ 않습니다.그것은 포기하는 시간에 SP 동 LINQ?

도움이 되었습니까?

해결책

LINQ to SQL 실제로 제공 몇 가지 놀라운 성능 문제 데이터베이스에서.기본적으로 만들어 여러 실행 계획의 길이를 기준으로 매개변수는 당신이 사용하고 있습니다.게시 그것에 대해 동시에 나 블로그 LINQ to SQL 을 일으킬 수 있는 성능 문제.

이제는 것을 말하는 것 LINQ 이 없는가?거의 없습니다.LINQ 확실히이 있는 장소에서 개발 툴킷처럼,저장되는 절차가 있습니다.궁극적으로,당신이 원하는 저장 프로시저를 사용하면 성능이 절대적으로 필요하고 사용 ORM 에서 도구를 다른 어떤 상황이다.

로 인라인 SQL 가,방법이 있을 실행하는 인라인 SQL 도록 계획되어 없이 한 번 다시 컴파일.가장 ORMs 주의해야 이러한 측면의 성능 튜닝뿐만 아니라 이러한 방법을 사용하여 일반적으로 가장 안전한 방법을 실행하 SQL 이후 그것은 당신을 사용하여 매개 변수가 있는 검색어입니다.

가장 좋아하는 데이터베이스 솔루션,오른쪽에 답변에 따라 달라집 문제를 해결하기 위해 노력하고있다.는 경우 호의 개발 속도를 통해 데이터베이스/응용 프로그램의 성능,다음 사용하 LINQ 또는 다른 DAL/ORM 도구는 갈 수 있는 가장 좋은 방법입니다.는 경우 호의 성능성의 개발,다음 사용하여 저장된 절차 및 순수한 데이터 될 것입니다 당신의 최선의 방법입니다.LLBLGen 도 제공합 LINQ to LLBLGen 레이어를 사용할 수 있도록 LINQ 을 쿼리 LLBLGen 의 개체고 LLBLGen 실제로 처리 빌딩 쿼리고 피부의 낙하의 LINQ.

다른 팁

귀하의 기본 전제는 결함이..

인라인 SQL 중 하나가 필요 합과 소통하는 데이터베이스에서 특정 방법으로 열리는 데이터베이스입니다.

No 그렇지 않습니다.하드 코딩하는 사용자 입력 값으로 SQL 문 않지만,당신이 할 수있는 상점을 가진 절차뿐만 아니라.

매개 변수화하는 쿼리를 경비에 대해 공격에 주입이지만,인라인 SQL 수 있는 매개 변수화만큼 쉽게 저장되는 절차가 있습니다.

인라인 SQL 수도 있어야 합 구문을 확인,계획,구축한 후 실행됩니다.

모든 Sql(SPs 및 인라인)해야 합 구문을 확인하고 계획에 내장되어 그들의 첫 번째 호출합니다.그 후,정확한 텍스트는 요청의 및 실행 계획 캐시됩니다.는 경우 다른 요청은 정확히 동일한 텍스트(지 않는 계산 매개 변수)을 받,캐시된 실행 계획을 사용합니다.

그래서,당신은 열심히-코드 값으로 인라인 SQL,텍스트가 일치하지 않을,그리고 그것을 다시 구문 분석 쿼리가 있습니다.그러나 사용하는 경우,매개 변수 텍스트의 쿼리가 일치하고,당신을 얻을 것이 캐시했다.어떤 경우에는,그것이 문제가 되지 않을 경우 쿼리에 인라인 또는 SQL SP.

다시 말해서,유일한 문제로 인라인 SQL 은 그것이 쉽게 무언가를 하는 느&안전하지 않습니다.하지만 인라인 SQL 빠르고 안전한 것은 더 이상 작동하는 것을 사용하여 SP.

우리를 제공하는 LINQ,는 항상 매개 변수를 사용하는 경우에도,하드 코드 값으로 LINQ 문을 만들고,"빠르고 안전한"인라인 SQL 하는 것입니다.

LINQ 또한을 통해 이점 SPs 의 모든 코드에서 하나의 명소,대신에 흩어져있는 두 가지 이상의 다른 기계입니다.

에 관심이 있는 경우 벤치마킹,Rico Mariani 가 우수 5-part 연구 을 커버하는 질적 및 양적 차이점이 있습니다.

그가 될 수 있습니다 MS 는 사람이다,그러나 그는으로 알려진 성능 너트의 벤치마크가 철저하고 잘 생각했다.

이것은 성능을 실행하여 막시밀리안 벨러.그에 따르면,LINQ 은 훨씬 느리다.그는 포괄적인 연구

다만 생각하 변경에 대해 열을 이름을 변경(n)SPs(x)전망이다.

할 모든 것은 비싼에서 데이터베이스(검색처럼,정렬 등)및 당신이 통지하지 않습는 문제입니다.

또한,하려면 디스플레이드없이 페이징...다음 사용 데이터 집합을 하나 더 빠릅니다.

직접 또한 사용 linq2sql-당신은 문제가:)?

사용 ORM-그것은 이동하는 방법에 대부분의 응용 프로그램.

PS:또한,마이크로에 대한 벤치마킹 같은..자를 선택하 10.000 행 ORM-하지 않습니다.지 않는 왜 당신이 사용하는 ORM.선택하려면 10.000 행을 사용하여 ADO.

그것은 당신이 무엇에 따라 달라 집니다.LINQ 될 것입니다 적은 효율적인에서는 실제 데이터/세트를 조작보다는 실제 데이터베이스입니다.하지만 당신은에서 많은 것을 저장하지 않는 데이터베이스에 연결하는 네트워크를 통해.

는 경우에 데이터베이스에서 동일한 기계 또는 공식적으로'연결된',당신은 아마 사용하는 것이 더 낫습니다.

하지만 경우에 당신은 다시 얻는 큰 결과를 설정 원격지에서 db 의미할 수 있 중요한 전송이 시간 또는 정말 짧은 쿼리지 않을 것을 정당화한 오버헤드 LINQ 할 수 있을 것이 좋다.

때문에의 구조 LINQ to SQL,가능한 방법은 없 수 빠르 보를 사용하여 원 SQL,또는 당신의 자신의 잘 형성하는 쿼리 또는 저장 프로시저입니다.What LINQ 구입 당신 속도를하지 않지만 형식의 안전성과 조직에서 짧은 대부분의 혜택을 ORMs 일반적으로 권한을 부여.

LINQ to SQL 지 않은 속도에 대해,그것은 건물을 더 쉽게 유지 관리 소프트웨어 시스템입니다.그것은에 대한 모든 재료는 전용 소프트웨어 엔지니어 및 건축가에 대해 관심과 같은 느슨한 결합과 레이어링

는지를 말할 수 없는 일부를 구축은 정말 unmaintainable 코드 LINQ--아무도 당신을 유지에서 촬영에서 자신을 발하지만 당신은-하지만이 제대로 수행,LINQ 엄청난 도움이 될 수 있다.을 말하고 있지 LINQ 는버,그러나입니다.그것은 호스트의 문제는 어렵게 사용하기에 많은 기업이 상황--는 이유는 MS 제공하는 엔티티 프레임 워크(ADO.NET 3.0).물론 심지어는 완벽하지 않고 주어진 최근 EF 투표의 자신감입니다.

이 LINQ to SQL 또는 EF 보다 더 원 SQL?말 울려 퍼지는 지옥 그래.이 있는 다른 솔루션을 작동할 수 있는 더 나은?아마.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top