문제

데이터베이스에 대해 임의의 스크립트를 실행하는 .NET 프로그램을 작업하고 있습니다.

동료가 데이터베이스 액세스 코드 작성을 시작했을 때, 그는 단순히 하나의 명령 개체를 응용 프로그램의 나머지 부분에 노출 시켰습니다 (설정) CommandText/Type, 전화 ExecuteNonQuery() 각 진술에 대해.).

나는 이것이 매번 반복되고 동일한 진술에 대한 큰 성능이라고 생각합니다.

그래도 궁금한 점은 각 문과 다른 경우 (다른 매개 변수뿐만 아니라 완전히 다른 진술) 각 문과 다르면 실행 속도를 저하시겠습니까? 문서에서 그 답을 쉽게 찾을 수 없었습니다.

BTW, 사용 된 RDBMS는 Oracle이지만이 질문은 실제로 데이터베이스에 따라 다릅니다.

추신 : 나는 똑같이 노출한다는 것을 알고 있습니다 Command 객체는 스레드 안전하지는 않지만 여기서는 문제가되지 않습니다.

도움이 되었습니까?

해결책

새로운 명령 개체를 만드는 데 관련된 오버 헤드가 있으므로 특정 상황에서는 동일한 명령을 재사용하는 것이 합리적 일 수 있습니다. 그러나 일반적인 사례가 전체 응용 프로그램을 위해 시행되었으므로 조금 이상해 보입니다.

다른 팁

성능 히트는 일반적으로 데이터베이스에 대한 연결을 설정함으로써 발생하지만 Ado.net은 여기에서 도움이되는 연결 풀을 만듭니다.

새로 구문 분석 명세서를 피하려면 새롭게 진술을 피하려면 저장된 절차에 넣을 수 있습니다.

나는 당신의 동료들이 명령 개체를 재사용하는 것이 차이를 만들어 낸 다른 플랫폼에서 일하는 것에서 물려받은 오래된 스타일의 접근 방식을 사용한다고 생각합니다.

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