0

우리는 SQL 엔터프라이즈 백엔드에 백업하는 .net 엔터프라이즈 애플리케이션을 가지고 있습니다..net SQL 프로파일 링 통합

우리의 큰 고객 중 일부는 이제 SQL 기반 성능 병목 현상에 대해 설명합니다. 우리는 성능을 향상시킬 수있는 많은 글로벌 인덱싱을 적용했지만 최대 사용 사례로 통과했을 때의 한계를 뛰어 넘는 고객을 지속적으로 확보하고 있으며 이것이 잘못된 것이라고 말할 수는 없습니다.

큰 의미의 고객을 파악하고 데이터베이스에 색인을 제공하는 기능을 제공 할 수 있다는 것을 의미합니다. 이 시점에서 나는 모든 고객이 시스템을 다르게 사용할 것이기 때문에 경우에 따라 달성 할 수 있음을 알 수 있습니다.

제 생각에는 일정 기간 고객 데이터베이스에서 SQL 프로파일 러를 실행하고이 데이터를 데이터베이스의 테이블에 넣고 해당 기간 이후에 데이터를 분석하고 필요한 경우 성능을 향상시키는 인덱스를 적용하는 것입니다.

enterpise 앱은 asp.net mvc입니다. 누구든지 우리가 데이터베이스와 서버에 연결 문자열을 통해 ASP 프로필 서버에서 SQL 프로파일 러를 발사하는 .net 코드를 추가 할 수 있고 테이블에 결과를 펌프로 퍼 올릴 수 있는지 알고 있습니까?

또는 다른 방법에 대한 조언이 필요합니까?

답변

2

SQL Server 프로파일 러는 SQL Trace API에서 처리하는 모든 이벤트를 표시하는 그래픽 인터페이스 일뿐입니다. SQL 저장 프로 시저 및 .Net 코드를 통해 추적 데이터를 시작하고 캡처 할 수 있습니다. 여기에 두 가지 예가 나와 있습니다. 조금 오래되었지만 SQL 추적 throm .net 코드를 지침에 따라 시작했습니다. 여기

http://blogs.msdn.com/b/sqlprogrammability/archive/2006/05/26/receiving-profiler-events.aspx

는 추적을 시작하는 프로파일에 의해 실행되는 프로 시저의 목록이다. 항상 직접 실행할 수 있습니다. http://technet.microsoft.com/en-us/library/ms187346.aspx

0

오버 헤드 때문에 프로그래밍 방식으로 추적을 시작하지 않는 것이 좋습니다.

SQL Server에서 거의 추적 할 수없는 데이터를 얻는 오버 헤드가 훨씬 적어 계획 캐시 (일명 프로 시저 캐시)입니다. SQL 문을 SQL Server로 전달할 때마다 (저장된 프로 시저와 마찬가지로) SQL Server는 해당 문에 대한 실행 계획을 작성해야합니다. 계획을 반복하여 작성하지 않도록 메모리에 캐시하고 각 계획의 사용법을 추적합니다. 호출 횟수, 얼마나 많은 CPU 시간이 실행되는지, 얼마나 많은 논리적 읽기가 실행되는지 등의 정보를 얻을 수 있습니다.

독립 실행 형 계획 캐시 쿼리를 사용하여 시작할 수 있습니다. http://www.brentozar.com/responder/get-top-resource-consuming-queries/ 논리적 정렬은 가장 많은 데이터를 읽는 쿼리를 보려면 내림차순으로 읽습니다. 색인 생성은 종종 인덱스 작성에 가장 적합한 후보입니다.

그리고 더 멀리 가고 싶다면 내 무료 sp_AskBrent®을 확인하십시오. 계획 캐시의 샘플 (Perfmon 카운터, 저장소 메트릭 등)을 취하고 5 초 동안 기다린 후 다른 샘플을 취한 다음 해당 차이점을 비교하는 저장 프로 시저입니다. 결과는 SQL Server가 현재 느린 이유를 알려줍니다.

1

user907246에 언급 된 것처럼 SQL 프로필러는 SQL Server Trace API에서 수집 한 추적 정보를 표시하는 그래픽 인터페이스로, 온라인 데이터를 가져 와서 분석 할 수 있습니다. 그러나 SQL 프로필러는 서버에서 엄청난 과부하를 유발하며 프로덕션 환경에서 시작하지 않는 것이 좋습니다.

프로필러 대신 여기 (http://technet.microsoft.com/en-us/library/cc293613.aspx)에 설명 된대로 서버 쪽 추적을 구성하고 사용할 수 있습니다. 추적 파일 크기, 파일 롤업, 추적 필터 및 기타 중요한 기준을 지정할 수 있습니다. SQL Porfiler 대신 서버 추적을 사용하면 서버로드가 줄어들고 분석시 오프로드에 동일한 정보를 수집 할 수 있습니다. 즉, 엄청난 양의 도구를 오프라인 추적 analysys에 사용할 수 있습니다 (예 : QURE ANALYZER from DBSofic - 오프라인 추적 분석을 위해 설계된 무료 제품으로 데이터를 여러 차원으로 그룹화하고 필터링하고 성능 병목 현상을 찾아 낼 수 있습니다.

이 중 확장 된 이벤트는 향후 버전의 SQL 추적을 대체 할 SQL Server 2008 (http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx)에 추가되었습니다. 확장 이벤트 구성 및 사용에 대한 추가 정보는 다음을 참조하십시오. http://blogs.msdn.com/b/extended_events/

-1

설명하는 내용은 SQL Server의 Database Engine Tuning Advisor의 목적입니다. SQL Server 프로파일 러를 사용하여 추적을 실행 한 다음 데이터베이스 엔진 튜닝 관리자에 입력합니다. SQL로 인해 병목 현상이 발생했다면 알려줄 것입니다. 그렇지 않으면 데이터베이스 및 응용 프로그램 OS 모두에서 메모리 사용률, 디스크 IO, CPU % 등을 조사해야합니다.