2008-08-14 11 views

답변

6

SQL 프로파일 러에 대한 Brad의 언급 외에도 코드에서이 작업을 수행하려면 데이터베이스 호출은 공통 라이브러리을 통해 수행되어야합니다. 거기에 타이밍 코드를 삽입하면 시스템의 모든 쿼리에 걸리는 시간을 알 수 있습니다.

데이터베이스에 대한 단일 지점은 모든 ORM 또는 데이터베이스 계층의 표준 기능입니다. 또는 적어도 지금까지 작업 한 모든 프로젝트에있었습니다.

2

SQL Profiler에 따라 데이터 액세스 계층은 도구 I입니다 내 SQL Server로 흐르는 트래픽을 모니터링하는 데 사용합니다. SQL Server에 대한 자세한 데이터를 수집 할 수 있습니다. SQL 프로필러는 적어도 SQL Server 2000 이후 SQL Server와 함께 배포되었습니다 (하지만 그 전에도 가능할 수 있습니다).

적극 권장합니다.

0

CodePlex의 Dropthings 프로젝트에는 코드 타이밍 블록을위한 클래스가 있습니다. 클래스의 이름은 TimedLog입니다. IDisposable을 구현합니다. using 문에서 시간을두고 자하는 코드 블록을 래핑합니다.

0

레일을 사용하면 개발 로그 파일에 모든 SQL 쿼리와 실행 시간이 자동으로 기록됩니다.

잠시 시간이 걸리는 것을 보았다면 화면/로그 파일에서 바로 복사하여 붙여 넣기하고 mysql에 'explain'을 넣기 만하면되므로 매우 유용합니다.

코드를 살펴보고 어떤 일이 일어나고 있는지 재구성 할 필요가 없습니다.

약 1 시간 만에 디스크 공간이 부족해지기 때문에 실제 상황에서는 발생하지 않습니다.

1

제프 앳 우드 (Jeff Atwood)를 살펴보고 웹 사이트 성능 최적화에 대해 썼습니다. 우리는 많은 것을 다루지 만, 데이터베이스 추적과 최적화에 관한 많은 것들이 있습니다 : Speed Up Your Site: 8 ASP.NET Performance Tips

0

당신을 위해 SqlCommands를 생성하고 새로운 명령이 필요할 때 항상 그것을 호출하는 팩토리를 정의하면, RealProxy을 SqlCommand에 연결합니다.

이 프록시는 ExecuteReader/ExecuteScalar 등이 StopWatch를 사용하여 어딘가에 기록하는 시간을 측정 할 수 있습니다. Sql Server Profiler에 비해 이러한 종류의 메서드를 사용하면 SQL의 각 실행 부분에 대해 전체 스택 추적을 얻을 수 있다는 장점이 있습니다.