Maybe Normalizing Isn't Normal Jeff Atwood는 "소프트웨어를 통해 흐르는 모든 쿼리를 자동으로 측정하고 있습니다."라고 말합니다. 나는 그러고 싶지만 나는하고 싶다.모든 SQL 쿼리 자동 측정
문제의 응용 프로그램의 일부 기능 :
- ASP.NET은
- MS Enterprise Library Data Access Application Block
- MS SQL 서버
Maybe Normalizing Isn't Normal Jeff Atwood는 "소프트웨어를 통해 흐르는 모든 쿼리를 자동으로 측정하고 있습니다."라고 말합니다. 나는 그러고 싶지만 나는하고 싶다.모든 SQL 쿼리 자동 측정
문제의 응용 프로그램의 일부 기능 :
SQL 프로파일 러에 대한 Brad의 언급 외에도 코드에서이 작업을 수행하려면 데이터베이스 호출은 공통 라이브러리을 통해 수행되어야합니다. 거기에 타이밍 코드를 삽입하면 시스템의 모든 쿼리에 걸리는 시간을 알 수 있습니다.
데이터베이스에 대한 단일 지점은 모든 ORM 또는 데이터베이스 계층의 표준 기능입니다. 또는 적어도 지금까지 작업 한 모든 프로젝트에있었습니다.
SQL Profiler에 따라 데이터 액세스 계층은 도구 I입니다 내 SQL Server로 흐르는 트래픽을 모니터링하는 데 사용합니다. SQL Server에 대한 자세한 데이터를 수집 할 수 있습니다. SQL 프로필러는 적어도 SQL Server 2000 이후 SQL Server와 함께 배포되었습니다 (하지만 그 전에도 가능할 수 있습니다).
적극 권장합니다.
CodePlex의 Dropthings 프로젝트에는 코드 타이밍 블록을위한 클래스가 있습니다. 클래스의 이름은 TimedLog입니다. IDisposable을 구현합니다. using 문에서 시간을두고 자하는 코드 블록을 래핑합니다.
레일을 사용하면 개발 로그 파일에 모든 SQL 쿼리와 실행 시간이 자동으로 기록됩니다.
잠시 시간이 걸리는 것을 보았다면 화면/로그 파일에서 바로 복사하여 붙여 넣기하고 mysql에 'explain'을 넣기 만하면되므로 매우 유용합니다.
코드를 살펴보고 어떤 일이 일어나고 있는지 재구성 할 필요가 없습니다.
약 1 시간 만에 디스크 공간이 부족해지기 때문에 실제 상황에서는 발생하지 않습니다.
제프 앳 우드 (Jeff Atwood)를 살펴보고 웹 사이트 성능 최적화에 대해 썼습니다. 우리는 많은 것을 다루지 만, 데이터베이스 추적과 최적화에 관한 많은 것들이 있습니다 : Speed Up Your Site: 8 ASP.NET Performance Tips
당신을 위해 SqlCommands를 생성하고 새로운 명령이 필요할 때 항상 그것을 호출하는 팩토리를 정의하면, RealProxy을 SqlCommand에 연결합니다.
이 프록시는 ExecuteReader/ExecuteScalar 등이 StopWatch를 사용하여 어딘가에 기록하는 시간을 측정 할 수 있습니다. Sql Server Profiler에 비해 이러한 종류의 메서드를 사용하면 SQL의 각 실행 부분에 대해 전체 스택 추적을 얻을 수 있다는 장점이 있습니다.