문제

모두가 연결을 마치 자마자 연결을 닫아야한다는 것을 모두 알고 있습니다.

도메인 객체 모델 설계의 결함으로 인해 전체 페이지 수명주기를 위해 연결을 열어야했습니다. 본질적으로, 나는 첫 번째 호출에서 연결을 열어주는 시간에있는 속성을 가지고있다. 1 초 밖에 걸리지 않기 때문에 즉시 닫는 것보다 너무 다르지 않았습니다.

이거 괜찮아? 아니면 단일 사용 직후에도 여전히 닫아야합니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

이상적이지는 않지만 응용 프로그램을 다시 작성하지는 않습니다. 페이지가 다양한 방법으로 많은 시간을 소비하는 작업을 수행하지 않는 한 전체 페이지 라이프 사이클이 빠르게 실행되어야합니다. 실제로 그것은 연결 객체가 그렇지 않은 것보다 몇 밀리 초 더 오래 열린다는 것을 의미 할 수 있습니다. 일부 시나리오에서는 중요 할 수 있지만 귀하의 경우에는 소리가 들리지 않습니다.

다른 팁

아니요, 괜찮지 않습니다.

응용 프로그램의 성장 또는 규모가 필요한 경우이 문제를 해결하려고합니다. 그 연결을 열어 놓으면 확장 능력을 줄입니다. 열린 연결은 서버에서 메모리, 클라이언트의 메모리, 열린 잠금 장치를 유지하는 등의 메모리를 차지합니다.

Page.unload 이벤트에 도달하기 전에 페이지가 충돌하면 어떻게 되나요? 연결이 열려 있습니다. 나에게 가능한 한 빨리 연결을 닫는 것이 좋습니다.

예, 괜찮습니다.

연결을 최대한 빨리 닫는 것은 Orphan Open 연결을 방지하기위한 모범 사례이지만 연결이 가까워 졌다고 확신하면 아무런 문제가 없습니다.

모든 괜찮은 ASP.NET 앱은 오늘날 연결 풀링을 사용하며 풀은 기본적으로 많은 개방형 연결입니다. 귀하의 경우, 당신이 보유하고있는 연결이 "점유"이며 다른 요청을 제공하는 데 사용될 수 없다는 것을 의미합니다.

내가 보는 한 페이지가 작업/렌더링하는 데 필요한 시간에 따라 확장 성 문제가 될 것입니다. 당신이 말하는 것처럼 100 명의 사용자만을 기대한다면, 아마도 100 개의 REQ/SEC가 아니라면 문제가되지 않을 것입니다.

기술적 인 관점에서 괜찮습니다. 내가 그와 같이 작동하는 데 사용되는 클래식 ASP 코드를 포함하여 대부분의 클라이언트-서버 응용 프로그램 (웹 및 WEB)을 기억하는 한, 전체 페이지에 대한 하나의 연결을 선언하고이를 사용합니다.

페이지 충돌? 이것이 사용하고 마지막으로 사용하는 것입니다

즉, DB 성능 (즉, 스케일링)을 위해* 가능한 한 짧은 기간을 열어 두는 것이 가장 좋습니다.

* 나는 경력 초기에 멘토에 의해 이것을 들었습니다. 나는 실제로 이것을 직접 테스트하지는 않았지만 이론적으로 올바르게 들립니다.

물론 당신 ~할 수 있다 그것들을 열어 두십시오. 그러나 아니오. 최종 블록에서 사용한 후 닫으십시오. "모든 단일 용도"에서 공정한 트레이드 오프는 모든 사용 블록 후에 닫아야합니다. 저장된 Proc를 실행하고 열을 업데이트 한 다음 다른 행을 삭제하면 그 세 주위에서 열거 나 닫을 수 있습니다. 운영은 모두 시도/캐치/마침내 래핑한다고 가정합니다.

여러 쿼리를 수행하는 경우 페이지 수명에 걸쳐 연결을 열어야합니다. 일반적으로 하나는 실제로 많은 페이지에서 연결을 재사용합니다.

훨씬 더 많은 정보를 얻고 생산적인 피드백을 가진 더 나은 질문은 당신이하고있는 일 (코드)에 대한 몇 가지 스 니펫을 제공 하고이 선택을 한 이유를 확장 할 수 있다고 생각합니다. 연결을 너무 오래 열 필요가없는 더 나은 솔루션이있을 가능성이 높지만 최소한 실용적인 이유로 개선 할 가치가 있는지에 대한 피드백을 얻을 수 있습니다.

앞으로, 당신은 확실히 코드-비만의 데이터 액세스에서 멀어지고 싶어합니다.

orm을 사용할 때 연결을 열어 두는 것이 편리하다고 생각합니다 (열린 세션) 초기 열심 인사 후에 다른 데이터를 필요에 따라 게으르게로드 할 수 있습니다. 이것은 페이지 응답 시간이 연결을 묶지 않도록 합리적 일 때 잘 작동합니다.

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