2017-05-04 8 views
2

최근 우리 회사는 우리가 오랫동안 개발중인 응용 프로그램의 성능에 중점을두고 있습니다. 성능 테스트 중에 한가지 주목할 점은 특정 메서드가 너무 많은 데이터베이스 호출 (500 개 이상의 쿼리)을 작성하고 있다는 것입니다.http 요청 당 데이터베이스 호출 수 측정

그러면 어떤 메서드가 많은 호출을 수행하고 어떤 메서드를 우선적으로 리팩터링해야하는지와 같은 질문이 생깁니다. 처음에 이러한 방법 중 일부를 리펙토링하려고 할 때 왕복 횟수를 줄이기 위해 많은 노력이 필요하다는 것을 알게되었습니다. 그 이유는 우리의 데이터 액세스 레이어가 Hibernate ORM 프레임 워크에 상당히 의존하고 있기 때문에 우리는 개발 초기부터 Lazyloading 구성을 완전히 오용했다는 것을 알아 냈습니다. 그래서 왕복 횟수가 엄청나고 성능에 많은 영향을줍니다. 그리고 Lazy Loading 구성을 수정하면 많은 회귀가 발생합니다.

따라서 우리는 어떻게 든 http 요청 당 데이터베이스 호출 수를 수집하는 방법을 찾아야합니다. Application Insight 또는 AppDynamics와 같은 일부 도구가 모든 종속 호출에 대한 전반적인 결과를 제공하는 것을 보았습니다. 그러나 이러한 프레임 워크를 사용하는 것보다이 추적을 다르게 수집하는 방법이 있는지 궁금합니다.

예를 들어 HTTP 요청이있을 때마다 ExecuteQuery() 또는 SqlDataAdapter.Fill 메서드가 메서드의 호출 스택 내에서 호출 될 때마다 카운터를 늘릴 수있는 컨트롤러의 특성을 사용할 수 있습니까? 나는 이런 식으로 해결책을 찾고있다.

도움을 주시면 대단히 감사하겠습니다.

모든 제안 사항에 대해 미리 감사드립니다. 사물의 종류

+0

http://stackoverflow.com/questions/7667092/nhibernate-database-call-count –

+0

에 연결 @PaulAbbott 무엇을, 당신은 또한 [SQL 프로파일 러 (HTTPS 같은 도구를 사용할 수 있습니다 외에 : // MSDN을. microsoft.com/en-us/library/ff650699.aspx) 또는 SSMS –

+0

안녕하세요 @PaulAbbott, 링크를 확인했습니다. NHibernate 로깅은 http 요청이 아닌 통계를 제공합니다. 여러 가지 방법으로 전반적인 정보를 얻을 수 있습니다. 또한 NHibernate에 특정한 것을 찾고 있지 않습니다. 우리의 데이터 액세스 레이어는 주로 데이터 조작을 위해 NHibernate를 사용하지만 때때로 Ado.Net 라이브러리를 사용하여 데이터베이스와 직접 통신합니다. 따라서 SqlCommand, SqlConnection 및 SqlDataAdapter 수준에서 통계를 수집 할 수있는 저수준 솔루션을 찾고 있습니다. – telli

답변

1

사용 Stackify 접두사 :

https://stackify.com/prefix/

보기 SQL 쿼리 : SQL 매개 변수의 영향을 기록하고 얼마나 오래 결과 세트를 다운로드하는 데 걸린 포함.