지금 공유 :
차례 숨기기

1. 소개 SQL Server Performance Monitor (성능 모니터)

1.1 무엇입니까 SQL Server 성과 모니터?

SQL Server 성능 모니터는 성능과 상태를 추적, 분석 및 관리하는 프로세스입니다. SQL Server 데이터베이스. 최적의 성능을 보장하고, 문제를 방지하며, 데이터베이스 상태를 유지하기 위해 데이터베이스 시스템의 다양한 측면에 대한 데이터를 수집하고 해석하는 것을 포함합니다.

성능 모니터링은 쿼리 실행 시간, 리소스 사용률, 인덱스 성능, 차단 및 교착 상태, 그리고 데이터베이스 증가 패턴을 추적하는 것을 포함합니다. 이러한 지속적인 감독을 통해 관리자는 사용자나 비즈니스 운영에 영향을 미치기 전에 잠재적인 문제를 파악할 수 있습니다.

1.2 성능 모니터링의 주요 이점

유효한 SQL Server 성능 모니터는 여러 가지 중요한 이점을 제공합니다.

  • 사전 예방적 문제 감지: 사용자나 비즈니스 운영에 영향을 미치기 전에 잠재적인 문제를 식별하고 해결합니다.
  • 성능 최적화: 전반적인 데이터베이스 성능을 개선하기 위해 병목 현상과 비효율성을 정확히 파악합니다.
  • 용량 계획: 과거 데이터를 기반으로 리소스 요구 사항을 예측하고 향후 성장을 계획합니다.
  • 규정 준수 및 보안: 규정 요구 사항 준수를 보장하고 의심스러운 활동을 감지합니다.

1.3 일반적인 성능 과제

적절한 SQL 데이터베이스 성능 모니터가 없으면 조직은 여러 가지 위험에 직면하게 됩니다.

  • 비즈니스 운영을 방해하는 예상치 못한 다운타임
  • 사용자 경험에 영향을 미치는 애플리케이션 성능 저하
  • 데이터 손실 또는 손상
  • 비효율적인 자원 활용으로 불필요한 c 발생osts
  • 좌절한 사용자와 잠재적인 수익 손실

IDC의 2023년 연구에 따르면, 데이터베이스 성능 문제의 65%는 모니터링이나 최적화 관행이 부족해서 발생합니다.

2. Windows 성능 모니터(PerfMon) 이해

2.1 Windows 성능 모니터란 무엇인가요?

Windows 성능 모니터(PerfMon)는 시스템 리소스와 응용 프로그램 성능을 모니터링하는 기본 제공 Windows 도구입니다. SQL Server 관리자에게 PerfMon은 운영 체제와 SQL Server 포괄적인 성과 분석에 필수적인 지표입니다.

Windows 성능 모니터(PerfMon)

PerfMon은 정기적으로 성능 통계를 측정하고 추후 분석을 위해 해당 통계를 파일에 저장합니다. 데이터베이스 관리자는 시간 간격, 파일 형식 및 모니터링할 통계를 선택할 수 있습니다. 이 도구는 SQL Server-특정—시스템 관리자는 이를 사용하여 Windows 자체, Exchange, 파일 서버 및 병목 현상이 발생할 수 있는 모든 애플리케이션을 모니터링합니다.

2.2 성능 모니터 실행

다음과 같은 여러 가지 방법을 사용하여 성능 모니터를 실행할 수 있습니다.

  1. Start입력 성능 모니터 검색창에서 검색 결과에서 "Performand Monitor"를 클릭합니다.
    검색 및 starWindows 검색창에서 PerfMon을 엽니다.
  2. PR 기사 윈도우 + R입력 성능 모니터, 그리고 언론 엔터 버튼
    StarWindows 실행 상자의 PerfMon.
  3. 로 이동 제어 패널 -> 시스템 및 보안 -> 관리 도구 -> Performance Monitor (성능 모니터)
    Star제어판 -> 시스템 및 보안 -> 관리 도구 -> 성능 모니터에서 PerfMon을 실행합니다.

3. 본질적인 SQL Server 성능 카운터

3.1 메모리 성능 카운터

메모리 카운터는 모니터링에 중요합니다. SQL Server 데이터베이스에 충분한 메모리 리소스가 있는지 여부를 나타내므로 성능이 중요합니다.

사용 가능한 MB

이 카운터는 할당에 즉시 사용 가능한 실제 메모리 용량을 나타냅니다. 이 값은 거의 일정하게 유지되어야 하며, 이상적으로는 4096MB 아래로 떨어지지 않아야 합니다. 값이 낮으면 SQL Server'의 최대 메모리 설정은 기본값으로 유지되거나SQL Server 애플리케이션이 메모리를 소모하고 있습니다.

페이지 수명 기대치

페이지 수명 기대치는 페이지가 참조되지 않고 버퍼 풀에 머무르는 시간(초)을 측정합니다. 정상 값은 300초 이상입니다. 이 값이 낮을수록 메모리 부족과 과도한 버퍼 회전으로 인해 캐시 효율성이 저하됨을 나타냅니다.

버퍼 캐시 적중률

이 카운터는 디스크에서 읽는 대신 SQL 버퍼 캐시(메모리)를 사용하여 응답한 데이터 요청의 비율을 나타냅니다. 일반적으로 99% 이상입니다. 값이 낮을수록 SQL Server 더 많은 메모리가 필요하거나 res 후에도 여전히 예열 중입니다.tart.

메모리 부여 보류 중

이는 메모리를 기다리는 프로세스의 수를 보여줍니다. SQL Server. 정상적인 조건에서 이 값은 일관되게 0이어야 합니다. 더 높은 값은 메모리 할당이 충분하지 않음을 나타냅니다. SQL Server.

Tar서버 메모리 대 총 서버 메모리 가져오기

Target Server Memory는 이상적인 메모리 양을 나타냅니다. SQL Server 사용하려고 합니다. 총 서버 메모리는 다음을 보여줍니다. SQL Server 현재 사용 중입니다. 이 값들 사이의 비율은 약 1이어야 합니다. 차이가 크다면 메모리 부족이나 사용 가능한 메모리 부족을 나타낼 수 있습니다.

3.2 프로세서 성능 카운터

CPU 카운터는 프로세서 병목 현상을 식별하고 이해하는 데 도움이 됩니다. SQL Server 컴퓨팅 리소스를 활용합니다.

% 프로세서 시간

프로세서가 유휴 상태가 아닌 스레드를 실행하는 데 소요되는 경과 시간의 백분율을 측정합니다. 활성 서버에서는 값이 100%까지 치솟을 수 있지만, 70~75% 이상의 지속적인 사용률은 일반적으로 사용자에게 성능 문제를 나타냅니다. 인덱스가 누락되거나 부적절하면 CPU 사용량이 높아지는 경우가 많습니다.

% 특권 시간

프로세서 시간은 사용자 모드와 권한(커널) 모드 처리로 나뉩니다. 모든 디스크 액세스와 I/O는 커널 모드에서 발생합니다. 이 카운터가 25%를 초과하면 시스템이 I/O를 너무 많이 수행하고 있을 가능성이 높습니다. 정상 값은 5%에서 10% 사이입니다.

프로세서 대기열 길이

이 카운터는 CPU 리소스를 기다리는 스레드를 표시합니다. 값이 지속적으로 1보다 큰 경우(예외: SQL Server 백업 압축)은 CPU 부하를 나타냅니다. 이는 종종 다른 응용 프로그램이 설치되어 있음을 의미합니다. SQL Server 모범 사례를 위반하는 기계입니다.

컨텍스트 스위치/초

이는 프로세서가 스레드 간에 전환하는 빈도를 측정합니다. 과도한 컨텍스트 전환은 성능에 영향을 줄 수 있으며, 높은 시스템 부하를 나타냅니다.

3.3 디스크 I/O 성능 카운터

디스크 카운터는 SQL 성능 모니터링에 필수적입니다. 디스크 I/O는 종종 데이터베이스 시스템의 주요 병목 현상이 되기 때문입니다.

% 디스크 시간

디스크가 읽기/쓰기 작업으로 사용되었던 시간의 백분율을 기록합니다. 값이 지속적으로 85%를 초과하면 I/O 병목 현상이 발생했음을 나타냅니다. 디스크는 메모리보다 훨씬 느리기 때문에 이 지표를 줄이면 성능이 향상됩니다.

평균 디스크 초/읽기 및 평균 디스크 초/쓰기

이 카운터는 읽기 및 쓰기 작업의 평균 시간(초)을 측정합니다. 평균값이 10~20ms를 초과하면 디스크가 데이터를 처리하는 데 너무 오랜 시간이 걸리는 것입니다. 트랜잭션 로그 드라이브는 특히 빠른 쓰기 성능이 필요합니다.

디스크 대기열 길이

이는 디스크에 대한 미처리된 읽기/쓰기 요청을 보여줍니다. 값이 2(또는 RAID 어레이의 경우 디스크당 2)보다 지속적으로 높으면 디스크가 I/O 요청을 감당할 수 없음을 나타냅니다.

디스크 바이트/초

디스크와의 데이터 전송 속도를 모니터링합니다. 이 속도가 디스크의 정격 용량을 초과하면 데이터가 백로그되기 시작하며, 이는 디스크 대기열 길이 증가로 나타납니다.

디스크 전송/초

이는 디스크에서 수행된 읽기/쓰기 작업의 수를 추적합니다. SQL Server 데이터 액세스는 일반적으로 무작위로 이루어지며, 드라이브 헤드 움직임으로 인해 속도가 느려집니다. 이 값이 디스크 드라이브의 최대 속도(일반적으로 표준 드라이브의 경우 초당 100회)보다 낮게 유지되도록 하십시오.

3.4 SQL Server 특정 카운터

3.4.1 버퍼 관리자 카운터

버퍼 관리자 카운터 모니터 SQL Server'의 메모리 버퍼 작업:

  • 페이지 읽기/초: 물리적 데이터베이스 페이지 읽기의 누적 횟수
  • 페이지 쓰기/초: 물리적 데이터베이스 페이지 쓰기의 누적 횟수
  • 지연 쓰기/초: Lazy writer가 메모리를 비우기 위해 쓴 버퍼 수
  • 체크포인트 페이지/초: 체크포인트 또는 모든 더티 페이지를 플러시해야 하는 기타 작업에 의해 플러시된 페이지

3.4.2 SQL 통계 카운터

이 카운터는 다음에 대한 통찰력을 제공합니다. SQL Server 쿼리 처리:

  • 배치 요청/초: 서버가 수신한 SQL 배치 요청 수입니다. 이는 서버 활동의 벤치마크 역할을 합니다.
  • SQL 컴파일/초: SQL 컴파일 횟수입니다. 총 배치 요청/초의 10% 이하여야 합니다.
  • SQL 재컴파일/초: SQL 재컴파일 횟수. 또한 총 배치 요청/초의 10% 이하여야 합니다.

3.4.3 일반 통계 카운터

  • 사용자 연결: 시스템에 연결된 사용자 수입니다. 시간 경과에 따른 연결 증가를 추적하는 벤치마크로 사용됩니다.
  • 차단된 프로세스: 현재 차단된 프로세스 수입니다. 이상적으로는 0이어야 합니다.

3.4.4 메모리 관리자 카운터

  • 메모리 보조금 보류 중: 작업 공간 메모리 할당을 기다리는 총 프로세스 수입니다. 이상적으로는 0이어야 합니다.

4. 성능 모니터 설정 SQL Server(Windows Vista / Server 2008 이상)

우선, 카운터를 더 쉽게 관리할 수 있는 컨테이너를 만들어야 합니다.

  • Windows Vista/Server 2008 이상 버전의 경우 이 섹션에서 데이터 수집기 ​​세트를 만들 수 있습니다.
  • Windows XP/Server 2003 및 이전 버전의 경우 카운터 로그를 생성할 수 있습니다. 다음 섹션.

4.1 데이터 수집 세트란 무엇입니까?

데이터 수집기 ​​세트는 성능 카운터, 이벤트 추적 데이터 및 시스템 구성 정보를 단일 수집 단위로 구성합니다. 단순 카운터 로그보다 더 뛰어난 유연성을 제공하며, 포괄적인 SQL 데이터베이스 성능 모니터링을 위해 자동화되고 예약된 데이터 수집을 지원합니다.

4.2 데이터 수집기 ​​세트 생성

모니터링할 사용자 지정 데이터 수집기 ​​세트를 만듭니다. SQL Server 성능 카운터:

  1. 성능 모니터 열기
  2. AI Physics로 발견의 범위 확장 데이터 수집기 ​​세트
  3. 마우스 오른쪽 단추로 클릭 사용자 정의
  4. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 New -> 데이터 수집기 ​​세트
    PerfMon에서 새 데이터 수집기 ​​세트 만들기
  5. 설명적인 이름을 입력하세요(예: "SQL Server 성과 지표”)
  6. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 수동으로 생성 (고급)
    데이터 수집기 ​​세트에 대한 설명 이름을 설정합니다.
  7. 다음
  8. 체크 데이터 로그 생성 -> 성능 카운터
    새 데이터 수집기 ​​세트 만들기 마법사에서 데이터 로그 만들기 -> 성능 카운터를 선택합니다.
  9. 다음
  10. 추가 카운터를 선택하려면
  11. 추가 원하는 SQL Server 및 시스템 카운터.
    새로운 데이터 수집기 ​​세트에 성능 카운터를 추가합니다.
  12. 세트 샘플 간격
    • 정기적인 모니터링의 경우 1분(60초)을 사용하세요.
    • 능동적인 문제 해결을 위해서는 15~30초를 사용하세요.
    • 장기간에 걸쳐 고주파 캡처를 실행하지 마세요. 성능에 영향을 미치고 과도한 데이터가 생성될 수 있습니다.

    새로운 데이터 수집기 ​​세트 마법사에서 샘플 간격을 설정합니다.

  13. 다음
  14. 로그를 저장할 위치를 선택하세요
    새 데이터 수집기 ​​세트 마법사에서 성능 데이터를 저장할 위치를 설정합니다.
  15. 마감재 , 새로운 데이터 수집기 ​​세트가 생성됩니다.
  16. 기본적으로 새 데이터 수집기 ​​세트는 않습니다. s가 되라tar자동으로 ted됩니다. 왼쪽 패널에서 찾아야 합니다. 성능 -> 데이터 수집기 ​​세트 -> 사용자 정의 -> 데이터 수집기를 마우스 오른쪽 버튼으로 클릭하고 선택하세요 Start
    StarPerfMon에 새로운 데이터 수집기 ​​세트가 추가되었습니다.

4.3 추가할 주요 카운터

  • 메모리 -> 사용 가능한 MByte
  • 물리적 디스크 -> 평균 디스크 초/읽기(_Total을 제외한 모든 인스턴스)
  • 물리적 디스크 -> 평균 디스크 초/쓰기(_Total을 제외한 모든 인스턴스)
  • 물리적 디스크 -> 디스크 읽기/초(_Total을 제외한 모든 인스턴스)
  • 물리적 디스크 -> 디스크 쓰기/초(_Total을 제외한 모든 인스턴스)
  • 프로세서 -> % 프로세서 시간(_Total을 제외한 모든 인스턴스)
  • SQLServer: 일반 통계 -> 사용자 연결
  • SQLServer: 메모리 관리자 -> 보류 중인 메모리 부여
  • SQLServer: SQL 통계 -> 배치 요청/초
  • SQLServer: SQL 통계 -> SQL 컴파일/초
  • SQLServer: SQL 통계 -> SQL 재컴파일/초
  • 시스템 -> 프로세서 대기열 길이

4.4 정지 조건 설정

무제한 데이터 증가를 방지하려면 중지 조건을 구성하세요.

  1. 데이터 수집기 ​​세트를 만든 후 마우스 오른쪽 버튼을 클릭하고 다음을 선택합니다. 등록
  2. 클릭 정지 조건
  3. 사용 전체 기간
  4. 기간을 1일(24시간)로 설정하세요.
  5. OK 저장

데이터 수집기 ​​세트에 대한 중지 조건을 설정합니다.

이렇게 하면 로그가 너무 커지지 않고 자동으로 다시 생성됩니다.tar예약된 경우.

4.5 데이터 수집 일정

일관된 모니터링을 보장하기 위해 데이터 수집을 자동화합니다.

  1. 데이터 수집기 ​​세트를 마우스 오른쪽 버튼으로 클릭하고 선택하세요. 등록
  2. 클릭 일정
  3. 추가 새로운 일정을 만들려면
  4. 구성 star날짜와 시간
  5. 반복 패턴 설정(예: 매일)
  6. OK 일정을 저장하려면

데이터 수집기 ​​세트에 대한 일정을 설정합니다.

자동 s의 경우tartup, 데이터 수집기 ​​세트를 s로 구성합니다.tar서버가 부팅될 때 t를 생성하여tarWindows 작업 스케줄러의 tup 트리거.

5. 성능 모니터 설정 SQL Server(Windows XP / Server 2003 및 이전 버전)

Windows XP/Server 2003 및 이전 버전의 경우 카운터 로그를 만들 수 있습니다. 카운터 로그를 사용하면 성능 카운터 세트를 선택하여 주기적으로 파일에 기록할 수 있습니다.

5.1 카운터 로그 생성

새로운 카운터 로그를 만들려면 다음 단계를 따르세요.

  1. 성능 모니터 열기
  2. AI Physics로 발견의 범위 확장 성능 로그 및 경고 왼쪽 창에서
  3. 마우스 오른쪽 단추로 클릭 카운터 로그
  4. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 새로운 로그 설정
  5. 데이터베이스 서버 이름으로 로그 이름을 지정합니다(예: "ProductionSQL01").
  6. OK 구성을 시작하려면

각 서버에 대해 별도의 카운터 로그를 만들면 모든 서버의 데이터를 동시에 수집하지 않고도 개별 서버에서 성능을 테스트할 수 있습니다.

5.2 성능 카운터 추가

카운터 로그를 만든 후 모니터링하려는 특정 성능 카운터를 추가합니다.

  1. 클릭 카운터 추가 단추
  2. 컴퓨터 이름을 해당 컴퓨터 이름을 가리키도록 변경합니다. SQL Server 예
  3. PR 기사 사용 가능한 성능 객체를 로드하려면
  4. 드롭다운에서 성능 객체를 선택하세요(예: 메모리)
  5. 특정 카운터를 선택하세요 목록
  6. 해당되는 경우 인스턴스를 선택하세요cable (예: 개별 프로세서 또는 디스크)
  7. 추가 카운터를 포함하려면
  8. 원하는 모든 카운터에 대해 반복합니다.
  9. 닫기 끝나면

5.3 샘플 간격 구성

샘플 간격은 성능 모니터가 데이터를 수집하는 빈도를 결정합니다. 모니터링 요구 사항에 따라 적절한 간격을 구성하세요.

  1. 카운터 로그 속성에서 다음을 찾으세요. 샘플 데이터 매
  2. 간격을 설정합니다(기본값은 15초)
  3. 기준 모니터링의 경우 일일 수집에 1분 간격을 사용하세요.
  4. 문제 해결을 위해 짧은 버스트의 경우 15~30초 간격을 사용하세요.
  5. OK 신청

간격이 작을수록 더 많은 데이터가 생성되어 렌더링 및 분석이 더 어려워질 수 있습니다. 간격이 클수록 중요한 스파이크를 놓칠 수 있습니다. 데이터 세분성과 저장 및 분석 요구 사항의 균형을 맞추세요.

5.4 로그 파일 구성

적절한 로그 파일 구성을 통해 데이터가 효율적이고 접근 가능하게 저장되도록 보장합니다.

  1. 클릭 파일 로그 카운터 로그 속성의 탭
  2. 로그 파일 유형을 다음으로 변경하세요. 텍스트 파일(쉼표로 구분) 간편한 Excel 가져오기
  3. 구성
  4. 파일 경로를 전용 위치(예: 공유 PerformanceLogs 폴더)로 설정합니다.
  5. OK 확인

원격으로 파일에 접근하고 다른 사용자와 공유할 수 있도록 로그 저장을 위해 네트워크로 접근 가능한 공유를 사용하세요.

5.5 자격 증명 설정

성능 모니터가 원격으로 액세스할 수 있도록 적절한 자격 증명을 구성합니다. SQL Server 인스턴스:

  1. 카운터 로그 속성에서 다음을 찾으세요. 다음으로 실행
  2. 다음 형식으로 도메인 사용자 이름을 입력하세요. 도메인\사용자 이름
  3. 비밀번호를 설정
  4. 비밀번호를 입력하고 확인하세요
  5. OK 저장

이를 통해 PerfMon 서비스는 자체 자격 증명이 아닌 도메인 권한을 사용하여 통계를 수집할 수 있습니다.

6. 성능 모니터 데이터 분석

6.1 성능 모니터에서 로그 파일 보기

성능 모니터는 저장된 로그 파일의 과거 데이터를 표시할 수 있습니다.

  1. 성능 모니터 열기
  2. 왼쪽 창에서 모니터링 도구 -> Performance Monitor (성능 모니터).
  3. 그래프 영역의 아무 곳이나 마우스 오른쪽 버튼을 클릭하세요.
  4. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 등록
    그래프 영역의 아무 곳이나 마우스 오른쪽 버튼을 클릭하여 PerfMon에서 속성을 엽니다.
  5. 클릭 출처 탭
  6. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 로그 파일 라디오 버튼
  7.  추가
  8. 로그 파일(.blg 또는 .csv)로 이동합니다.
  9. 파일을 선택하고 클릭 엽니다
    PerfMon에서 그래픽 소스로 로그 파일을 설정합니다.
  10. 사용 시간 범위 분석하려는 기간을 선택하기 위한 슬라이더
  11.  OK 속성 대화 상자를 닫으려면
  12. 로그 파일에서 카운터를 추가하려면 녹색 더하기 아이콘을 클릭하세요.
    PerfMon의 로그 파일에서 카운터를 추가하려면 녹색 더하기 아이콘을 클릭하세요.
  13. 표시할 카운터를 선택하세요
    PerfMon의 그래픽에 원하는 카운터를 추가합니다.
  14.  OK

이제 그래프에 로그 파일의 과거 데이터가 표시됩니다. 속성의 시간 범위 슬라이더를 사용하여 특정 기간을 좁혀 자세한 분석을 확인하세요.

6.2 Excel로 데이터 내보내기

Excel은 성능 카운터 데이터에 대한 강력한 분석 기능을 제공합니다.

  1. 로그 파일이 로드된 상태에서 성능 모니터를 엽니다.
  2. 그래프 영역의 아무 곳이나 마우스 오른쪽 버튼을 클릭하세요.
  3. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 데이터를 다른 이름으로 저장
  4. 파일의 위치를 ​​선택하세요
  5. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 텍스트 파일(쉼표로 구분)(.csv) 드롭다운에서
  6. 찜하기
  7. Excel에서 CSV 파일을 엽니다

PerfMon에서 데이터를 파일로 내보냅니다.

더 나은 분석을 위해 내보낸 데이터를 포맷하세요.

  1. 반쯤 비어 있는 행 2를 삭제하고 셀 A1을 비웁니다.
  2. 열 A를 날짜/시간으로 서식 지정
  3. 소수점 0자리와 천 단위 구분 기호를 사용하여 숫자 열 서식 지정
  4. 헤더에서 서버 이름을 찾아 바꾸기(예: "\\SERVERNAME"을 공백으로 바꾸기)
  5. 헤더의 개체 이름 정리(예: "메모리", "물리적 디스크", "프로세서")
  6. 가시성을 높이기 위해 헤더 글꼴 크기를 8포인트로 줄이세요.

6.3 카운터 값 해석

6.3.1 메모리 카운터 분석

메모리 카운터를 분석할 때 다음 지표를 살펴보세요.

  • 사용 가능한 MByte: 지속적으로 4096MB 이상을 유지해야 합니다.
  • 페이지 수명 기대치: 300초 이상의 값은 건강한 메모리를 나타냅니다. 낮은 값은 메모리 부족을 나타냅니다.
  • 버퍼 캐시 적중률: 99%를 충족하거나 초과해야 합니다. 값이 낮을수록 디스크 읽기가 과도하게 이루어짐을 나타냅니다.
  • 메모리 보조금 보류 중: 항상 0이어야 합니다. 양수 값은 메모리를 나타냅니다.tar휴가

6.3.2 CPU 카운터 분석

CPU 성능 지표는 다음과 같습니다.

  • % 프로세서 시간: 75% 이상의 지속적인 사용은 성능 문제를 나타냅니다. 100%까지 급증하는 것은 정상이지만 지속되어서는 안 됩니다.
  • 프로세서 대기열 길이: 1보다 큰 값은 CPU 사용량을 나타냅니다. 작업 관리자를 확인하여 어떤 프로세스가 CPU를 사용하는지 확인하세요.
  • % 특권 시간: 5~10% 사이로 유지되어야 합니다. 25%를 초과하는 값은 과도한 I/O 작업을 나타냅니다.

6.3.3 디스크 카운터 분석

디스크 성능 임계값:

  • 평균 디스크 초/읽기 및 쓰기: 10~20ms 이하로 유지되어야 합니다. 값이 높을수록 디스크 하위 시스템이 느림을 나타냅니다.
  • 디스크 대기열 길이: 값이 지속적으로 2(또는 RAID의 디스크당 2)보다 높으면 I/O 병목 현상이 있음을 나타냅니다.
  • % 디스크 시간: 85% 이상의 지속적인 값은 디스크 포화 상태를 나타냅니다.

6.4 수식 및 통계 사용

빠른 분석을 위해 Excel에 통계 공식을 추가하세요.

  1. 스프레드시트 상단에 빈 행 7개를 삽입합니다.
  2. 열 A에 레이블 추가: 평균, 중앙값, 최소값, 최대값, 표준편차
  3. 셀 B2에 =AVERAGE(B9:B100)을 입력합니다(B100을 마지막 데이터 행으로 조정).
  4. 셀 B3에 =MEDIAN(B9:B100)을 입력합니다.
  5. 셀 B4에 =MIN(B9:B100)을 입력합니다.
  6. 셀 B5에 =MAX(B9:B100)을 입력합니다.
  7. 셀 B6에 =STDEV(B9:B100)을 입력합니다.
  8. 모든 카운터 열에 수식 복사
  9. 셀 B9를 선택하고 Alt+W+F+Enter를 눌러 창을 고정합니다.

이러한 통계는 각 카운터의 추세, 이상치, 정상 작동 범위를 파악하는 데 도움이 됩니다.

7. 로그 성능 분석(PAL) 도구

7.1 PAL 소개

PAL(Performance Analysis for Logs)은 클린트 허프먼(Clint Huffman)이 개발한 무료 도구로, 성능 모니터 로그를 분석하고 임계값 분석 기능을 갖춘 HTML 보고서를 생성합니다. PAL은 성능 데이터를 알려진 임계값과 비교하여 다음과 같은 세부적인 권장 사항을 제공합니다. SQL Server 성능 최적화.

GitHub 저장소에서 PAL을 다운로드하세요: https://github.com/clinthuffman/PAL 외부 링크

7.2 PAL 설정

다음 단계에 따라 PAL을 설치하세요.

  1. GitHub에서 PAL 설치 파일을 다운로드하세요
  2. 설치 프로그램을 실행
  3. 다음 환영 화면에서
  4. 설치 디렉토리를 검토하고 수락하세요
  5. 다음 계속
  6. 설치 설치를 시작하려면
  7. 설치가 완료될 때까지 기다리십시오.
  8. 마감재

7.3 PAL을 사용하여 로그 파일 처리

PAL을 사용하여 성능 모니터 로그를 분석하세요.

  1. S에서 PAL 시작tart 메뉴 또는 설치 디렉토리
  2. 클릭 카운터 로그
  3. 검색 .blg 파일을 선택하려면
  4. 성능 모니터 로그 파일로 이동합니다.
  5. 엽니다
  6. 클릭 임계값 파일
  7. 드롭다운에서 임계값 파일을 선택합니다(예: "SQL Server 2016 인치)
  8. 클릭 질문
  9. 시스템 구성에 대한 질문에 답하세요
  10. 귀하의 여부를 지정하십시오 SQL Server OLTP 또는 데이터웨어하우스인가요?
  11. 사용 가능한 총 RAM을 입력하세요
  12. 클릭 출력 옵션
  13. HTML 보고서에 대한 출력 디렉토리를 선택하세요
  14. 체크 HTML 출력 형식
  15. 클릭 실행하다
  16. 선택 사항을 검토하세요
  17. 체크 Star지금 실행
  18. 마감재

7.4 PAL 보고서 분석

PAL이 분석을 완료하면 다음 내용을 포함하는 HTML 보고서가 생성됩니다.

  • 성과 문제에 대한 요약
  • 차트를 통한 자세한 카운터 분석
  • 색상으로 강조된 임계값 위반
  • 각 이슈에 대한 구체적인 권장 사항
  • 역사적 추세와 패턴

이 보고서는 심각도를 색상으로 표시합니다. 심각한 문제는 빨간색, 경고는 노란색, 정상 지표는 녹색으로 표시됩니다. 각 섹션을 검토하여 성능 병목 현상을 파악하고 PAL의 최적화 권장 사항을 따르세요.

8. 대안 SQL Server 모니터링 도구

8.1 내장 SQL Server 도구

8.1.1 SQL Server 활동 모니터

SQL Server 활동 모니터 실시간 정보를 표시합니다 SQL Server 프로세스 및 성과:

  1. 엽니다 SQL Server Management Studio(SSMS)를 사용하여 서버 인스턴스에 연결합니다.
  2. 개체 탐색기에서 서버 이름을 마우스 오른쪽 버튼으로 클릭합니다.
  3. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 활동 모니터
    Start 활동 모니터 SQL Server 매니지먼트 스튜디오.

활동 모니터는 프로세스, 리소스 대기, 데이터 파일 I/O, 그리고 최근의 고비용 쿼리를 보여줍니다. 현재 데이터베이스 활동에 대한 빠른 통찰력을 제공하지만 과거 데이터는 저장하지 않습니다.

활동 모니터 SQL Server

8.1.2 SQL Server 성과 대시보드

SQL Server Management Studio에는 다음과 같은 기본 제공 성능 보고서가 포함되어 있습니다.

  1. In SQL Server Management Studio(SSMS)에서 마우스 오른쪽 버튼을 클릭합니다. SQL Server 개체 탐색기의 인스턴스
  2. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 보고서 -> 표준 보고서
  3. 다음과 같은 사용 가능한 보고서 중에서 선택하세요. 성과 대시보드
    성능 대시보드 열기 SQL Server 매니지먼트 스튜디오.

성능 대시보드는 다음에 대한 시각적 통찰력을 제공합니다. SQL Server 시스템 CPU 사용률, 현재 대기 중인 요청, 성능 지표를 포함한 인스턴스 성능을 확인할 수 있습니다. 표준 보고서 메뉴를 통해 확인하세요.

성능 대시보드 SQL Server 관리 스튜디오

8.1.3 SQL Server 프로파일

SQL Server 프로파일 캡처하고 분석합니다 SQL Server 쿼리 실행, 트랜잭션 작업, 로그인 활동과 같은 이벤트입니다.

에tart SQL Server 프로파일러:

  1. In SQL Server Management Studio를 클릭하세요 도구 -> SQL Server 프로파일
    Start SQL Server 프로파일러에서 SQL Server 매니지먼트 스튜디오.

프로파일러는 상당한 성능 오버헤드를 발생시키므로, 사용량이 적은 시간대에 신중하게 사용하는 것이 좋습니다.ost 확장 이벤트는 영향을 줄이면서 더 나은 성능을 제공합니다.

SQL Server 프로파일

8.1.4 확장 이벤트

확장 이벤트 가벼운 성능 모니터링 시스템이 내장되어 있습니다. SQL Server. 대체합니다 SQL Server 더 나은 성능과 낮은 오버헤드를 갖춘 프로파일러입니다.

주요 기능은 다음과 같습니다 :

  • 특정 이벤트에 대한 세분화된 모니터링
  • 성능에 미치는 영향이 최소화됨
  • 맞춤형 이벤트 세션
  • SSMS 및 기타 도구와의 통합
  • 복잡한 필터링 및 집계 지원

SSMS를 통해 확장 이벤트 세션을 만듭니다.

  1. In 개체 탐색기, 서버를 확장하고 다음으로 이동하세요. 관리 -> 확장 이벤트 -> 세션
  2. 마우스 오른쪽 버튼으로 세션 선택하고 새 세션 마법사
    Star확장 이벤트의 새로운 세션 SQL Server 매니지먼트 스튜디오.
  3. 지시사항을 따르세요tar새로운 세션으로.

8.1.5 동적 관리 뷰(DMV)

DMV는 상태 모니터링, 문제 진단 및 성능 조정을 위한 자세한 서버 상태 정보를 제공합니다. 주요 DMV는 다음과 같습니다.

  • sys.dm_exec_query_stats: 쿼리 성능 통계
  • sys.dm_os_wait_stats: 서버 성능에 영향을 미치는 대기 유형
  • sys.dm_os_성능_카운터: SQL Server 성능 카운터 데이터
  • sys.dm_exec_requests: 현재 실행 중인 요청
  • sys.dm_exec_sessions: 활성 사용자 세션

T-SQL을 사용하여 이러한 뷰를 쿼리하여 실시간 성능 데이터와 과거 지표에 액세스합니다.

기본 사용법

-- See all active connections
SELECT * FROM sys.dm_exec_connections;

-- View current sessions
SELECT * FROM sys.dm_exec_sessions;

-- Check database file stats
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL);

8.2 타사 모니터링 솔루션

Redgate SQL 모니터

Redgate SQL Monitor는 모니터링을 전문으로 합니다. SQL Server Azure SQL Database 환경에서도 사용할 수 있습니다. 전체 자산 모니터링, 사용자 지정 가능한 알림 및 대시보드, 상세 보고 기능, 그리고 다른 Redgate 도구와의 통합을 제공합니다.

레드 게이트 SQL Server 모니터

SolarWinds SQL Server 모니터링 도구

솔라윈즈 SQL Server SQL Sentry라고도 알려진 모니터링 도구는 다음을 통해 심각한 성능 문제를 진단, 해결 및 예방하도록 설계되었습니다. SQL Server.

SolarWinds SQL Server 모니터링 도구

IDERA의 SQL Server 성능 모니터링 도구

IDERA SQL 진단ostic Manager는 강력합니다. SQL Server 사전 성능 모니터링, 진단을 지원하도록 설계된 성능 모니터링 도구ostics와 튜닝.

IDERA의 SQL Server 성능 모니터링 도구

애플리케이션 관리자의 SQL 모니터링

응용 프로그램 관리자는 Microsoft SQL Server 유용한 IT 솔루션을 제공하는 모니터링 도구입니다. 이는 SQL 데이터베이스의 성능을 감독하는 동시에 조직의 운영 중단으로 이어질 수 있는 버그를 식별하고 문제를 해결하도록 설계되었습니다.

애플리케이션 관리자의 SQL 모니터링

8.3 오픈 소스 모니터링 도구

DBA 대시

DBA Dash는 무료 오픈 소스 모니터링 도구로 다음과 같은 통찰력을 제공합니다. SQL Server 상태, 성능, 활동 등을 관리합니다. 특히 중소 규모 환경에 유용하며, 일일 DBA 점검, 성능 모니터링, 구성 추적 기능을 제공합니다.

SQL워치

SQLWATCH는 분산화된 실시간 서비스를 제공합니다. SQL Server 5초 단위의 모니터링을 통해 워크로드 급증을 포착합니다. 실시간 대시보드를 위한 Grafana와 심층 분석을 위한 Power BI를 지원합니다. 이 도구는 광범위한 구성 옵션, 유지 관리 필요성 없음, 그리고 무제한 확장성을 제공합니다.

오퍼서버

Stack Exchange에서 개발한 Opserver는 다음을 포함한 여러 시스템을 모니터링합니다. SQL Server, Redis, Elasticsearch를 지원합니다. 인프라 전반의 CPU, 메모리, 네트워크 및 하드웨어 통계에 대한 "모든 서버" 뷰를 제공합니다.

sp_WhoIsActive

sp_WhoIsActive는 Adam Machanic이 만든 포괄적인 활동 모니터링 저장 프로시저입니다. SQL Server 2005년부터 현재 릴리스까지의 버전이며 널리 사용됩니다. SQL Server 실시간 활동 모니터링을 위한 DBA.

sp_WhoIsActive를 사용하려면 http://whoisactive.com/에서 다운로드하여 데이터베이스에 설치한 후 다음을 실행하세요.

EXEC sp_WhoIsActive

이 절차에서는 현재 실행 중인 쿼리, 대기 정보, 차단 세부 정보 및 리소스 소비를 보여줍니다.

9. 모범 사례 SQL Server Performance Monitor (성능 모니터)

9.1 성과 기준 설정

성능 기준선은 귀하의 정상적인 운영 매개변수를 설정합니다. SQL Server 환경. 기준선이 없으면 현재 지표가 문제를 나타내는지, 아니면 일반적인 행동을 나타내는지 판단할 수 없습니다.

기준선을 만드는 방법:

  1. 최소 1주일 동안 정상 운영 중 성능 데이터 수집
  2. 최대 및 비수요 시간 동안 측정 항목 캡처
  3. 주요 카운터의 일반적인 값 문서화
  4. 해당되는 경우 계절적 변화를 기록합니다.cable
  5. 미래 지표와 비교하기 위한 기준 데이터 저장

분기별로 또는 중요한 인프라 변경, 애플리케이션 업데이트 또는 데이터베이스 수정 후에 기준선을 업데이트합니다.

9.2 적절한 경고 임계값 설정

알림으로 너무 많은 부담을 주지 않고도 의미 있는 알림을 받을 수 있도록 지능형 임계값을 구성하세요.

  • 보류 중인 메모리 부여 > 0은 메모리 부족을 나타냅니다.
  • 프로세서 대기열 길이가 코어당 2보다 크면 CPU 병목 현상이 발생합니다.
  • 디스크 초/읽기 또는 쓰기 > 20ms는 느린 I/O를 나타냅니다.
  • 차단된 프로세스 > 5 신호 경합 문제
  • 페이지 수명 기대치 < 300초는 메모리 부족을 나타냅니다.

기준 데이터와 특정 워크로드 특성에 따라 임계값을 조정하세요. 환경의 일반적인 변화를 고려한 적응형 임계값을 사용하세요.

9.3 정기적인 데이터 검토 및 분석

추세와 새로운 문제를 파악하기 위해 정기적인 성과 검토 일정을 잡으세요.

  • 매일: 상위 수준 지표 및 최근 알림 검토
  • 주간: 성과 추세에 대한 심층 분석 수행
  • 월별: 포괄적인 보고서를 생성하고 기준선과 비교합니다.
  • 분기별: 용량 계획 및 장기 추세 검토

문서화된 결과를 확인하고 시간 경과에 따른 성과 개선 사항을 추적합니다.

9.4 모니터링 오버헤드 균형 조정

모니터링 자체가 리소스를 소모하므로 데이터 수집과 성능 영향의 균형을 맞추세요.

  • 지속적인 모니터링을 위해 30~60초 간격을 사용하세요.
  • 활성 문제 해결에만 15초 간격을 사용하세요.
  • 과도한 데이터를 방지하기 위해 데이터 수집기 ​​설정 기간을 제한합니다.
  • 데이터베이스 파일과 별도의 드라이브에 로그를 저장합니다.
  • 관리 가능한 파일 크기를 유지하기 위해 오래된 성능 데이터를 보관합니다.

성능 모니터는 올바르게 구성하면 최소한의 오버헤드만 추가되며, 일반적으로 시스템 리소스의 2% 미만입니다.

9.5 장기 데이터 보존

의미 있는 추세 분석 및 용량 계획을 위해 성과 데이터를 보관하세요.

  • 최소 1~2년 분의 성과 데이터를 보관하세요.
  • 3~6개월 후 별도 보관소에 보관 데이터
  • 공간을 절약하기 위해 오래된 로그 파일을 압축하세요
  • 성과에 영향을 미치는 중요한 이벤트나 변경 사항을 문서화합니다.

성능 카운터 데이터의 크기가 비교적 작기 때문에 이를 무기한으로 보관하는 것이 장기 분석에 종종 가능하고 가치가 있습니다.

9.6 DevOps 관행과의 통합

CI/CD 파이프라인에 데이터베이스 성능 모니터링을 통합합니다.

  • 배포 검증에 데이터베이스 성능 측정항목 포함
  • 새로운 릴리스에 대한 성능 테스트 자동화
  • 코드 변경이 성능에 부정적인 영향을 미치지 않는지 확인합니다.
  • 각 릴리스에 대한 성능 벤치마크를 만듭니다.
  • 모니터링 알림을 사고 관리 시스템과 통합

10. 일반적인 성능 문제 해결

10.1 CPU 병목 현상 식별

CPU 병목 현상은 느린 쿼리 응답 시간과 높은 프로세서 사용률로 나타납니다. CPU 문제를 진단하려면 다음 단계를 따르세요.

  1. 프로세서 대기열 길이 카운터를 확인하세요. 코어당 2보다 큰 값은 CPU 부하를 나타냅니다.
  2. % 프로세서 시간을 검토하세요. 75% 이상의 값이 지속되면 CPU 병목 현상이 발생했음을 나타냅니다.
  3. 원격 데스크톱으로 SQL Server
  4. 작업 관리자 열기(Ctrl+Shift+Esc)
  5. 클릭 프로세스
  6. 체크 모든 사용자의 프로세스 표시
  7. 클릭 CPU CPU 사용량별로 정렬할 열 머리글
  8. CPU 리소스를 소비하는 프로세스를 식별합니다.

비-SQL Server 응용 프로그램이 CPU를 많이 소모하는 경우 데이터베이스 서버에서 제거하세요. sqlservr.exe가 CPU를 많이 사용하는 경우 다음 방법을 사용하여 조사하세요.

  • SQL 컴파일/초 및 SQL 재컴파일/초를 확인하세요. 배치 요청/초의 10%를 초과하는 값은 과도한 컴파일을 나타냅니다.
  • CPU 집약적 쿼리를 식별하려면 sys.dm_exec_query_stats를 쿼리합니다.
  • 누락된 인덱스 또는 비효율적인 작업에 대한 실행 계획을 검토합니다.
  • 테이블 스캔을 줄이기 위해 인덱스 추가를 고려하세요

10.2 메모리 문제 진단

메모리 문제가 상당한 영향을 미칩니다 SQL Server 성능. 다음 지표를 사용하여 메모리 문제를 진단합니다.

사용 가능한 메모리 드롭

사용 가능한 MBytes가 지속적으로 100MB 이하로 떨어지면 운영 체제는 메모리 부족에 직면하게 됩니다.tarvation. Windows가 페이지 아웃될 수 있습니다. SQL Server 메모리에서 디스크로 전송되어 성능 저하를 초래합니다.

낮은 페이지 수명 기대치

페이지 수명 기대치가 300초 미만이면 버퍼 캐시 회전율이 높음을 나타냅니다. 이는 메모리 할당이 부족하거나 쿼리로 인한 과도한 메모리 부족을 의미합니다.

낮은 버퍼 캐시 적중률

버퍼 캐시 적중률이 99% 미만인 경우 SQL Server 메모리가 아닌 디스크에서 데이터를 자주 읽습니다. 이는 버퍼 풀이 너무 작거나 SQL Server res 후에도 여전히 워밍업 중입니다.tart.

메모리 부여 보류 중

메모리 부여 보류 값이 0보다 크면 쿼리가 메모리 부여를 기다리고 있음을 나타냅니다. 이는 즉각적인 조치가 필요한 심각한 메모리 부족을 나타냅니다.

메모리 문제를 해결하려면:

  1. 구성 SQL Server 운영 체제에 충분한 RAM을 남겨두기 위한 최대 메모리 설정(일반적으로 서버 크기에 따라 4~8GB)
  2. "메모리에 페이지 잠금" 권한을 활성화합니다. SQL Server 서비스 계정
  3. 메모리 부족 현상이 지속되면 서버에 물리적 RAM을 추가하세요.
  4. 메모리 집약적 쿼리 식별 및 최적화

10.3 디스크 I/O 문제 해결

디스크 I/O는 데이터베이스 시스템에서 주요 성능 병목 현상이 되는 경우가 많습니다. 다음 방법을 사용하여 디스크 문제를 진단하세요.

높은 디스크 대기열 길이

디스크 대기열 길이가 지속적으로 2(RAID의 경우 디스크당 2)를 초과하면 디스크 하위 시스템이 I/O 요청을 처리할 수 없음을 나타냅니다. 이로 인해 보류 중인 작업이 백로그로 생성됩니다.

과도한 디스크 대기 시간

평균 디스크 읽기/초 및 평균 디스크 쓰기/초 값이 10~20ms를 초과하면 디스크 응답 속도가 느립니다. 트랜잭션 로그 드라이브는 특히 빠른 성능, 이상적으로는 쓰기 속도가 5ms 미만이어야 합니다.

높은 % 디스크 시간

85% 이상의 지속적 디스크 시간(%)은 디스크 포화 상태를 나타냅니다. 디스크는 most 남은 유휴 용량이 거의 없는 상황에서 I/O 요청을 처리하는 데 시간이 많이 걸립니다.

디스크 문제를 해결하기 전에 메모리 문제의 증상이 아닌지 확인하세요. 메모리가 부족하면 SQL Server 디스크에서 더 많은 데이터를 읽어 디스크 메트릭을 인위적으로 늘립니다.

진정한 디스크 I/O 문제를 해결하려면:

  • 더 빠른 디스크로 업그레이드하세요(HDD 대신 SSD)
  • 더 나은 성능을 위해 RAID 구성을 구현하세요
  • 별도의 데이터베이스 파일, 트랜잭션 로그 및 tempdb를 다른 물리적 드라이브에 배치합니다.
  • 디스크 읽기를 줄이려면 메모리를 추가하세요
  • 불필요한 I/O를 줄이기 위해 인덱스를 최적화하세요
  • 성능이 좋지 않은 쿼리를 검토하고 최적화합니다.

10.4 블로킹 및 교착 상태 해결

한 세션이 다른 세션의 진행을 방해하는 잠금을 보유하고 있을 때 차단이 발생합니다. 차단 문제를 파악하려면 다음 카운터를 모니터링하세요.

  • 차단된 프로세스: 이상적으로는 0이어야 합니다.
  • 잠금 대기/초: 대기가 필요한 잠금 요청 수
  • 평균 대기 시간: 잠금 대기의 평균 기간

차단을 조사하려면:

  1. SSMS에서 활동 모니터 열기
  2. 확장 프로세스 섹션에 있어야 합니다.
  3. 0이 아닌 프로세스를 찾으세요 차단됨
  4. 차단 세션 ID를 식별합니다.
  5. 차단을 유발하는 쿼리를 검토하세요

더 자세한 차단 분석을 위해 sp_WhoIsActive를 사용하세요. wait_info 항목이 너무 많으면 tempdb 경합이나 차단 문제를 나타내는 경우가 많습니다.

차단을 줄이려면:

  • 거래 기간 최소화
  • 적절한 격리 수준을 사용하세요
  • 잠금 기간을 줄이기 위해 인덱스를 추가합니다.
  • READ_COMMITTED_SNAPSHOT 격리를 고려하세요
  • 장기 실행 쿼리 검토 및 최적화

10.5 쿼리 성능 문제

SQL 성능 모니터링을 위해서는 비용이 많이 드는 쿼리를 식별하는 것이 필수적입니다. 다음 방법을 사용하여 문제가 있는 쿼리를 찾아보세요.

활동 모니터 사용

  1. SSMS에서 서버 이름을 마우스 오른쪽 버튼으로 클릭합니다.
  2. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 활동 모니터
  3. AI Physics로 발견의 범위 확장 최근 비싼 쿼리
  4. CPU, 지속 시간 또는 논리적 읽기가 많은 검토 쿼리

DMV 사용

리소스를 많이 사용하는 쿼리를 식별하려면 sys.dm_exec_query_stats를 쿼리하세요.

SELECT TOP 50
    total_worker_time/execution_count AS avg_cpu_time,
    total_logical_reads/execution_count AS avg_logical_reads,
    execution_count,
    SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset
        END - qs.statement_start_offset)/2) + 1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY total_worker_time DESC

실행 계획 분석

  1. SSMS에서 새 쿼리 창을 엽니다.
  2. 예상 실행 계획 표시 (Ctrl+L) 또는 실제 실행 계획 포함 (Ctrl+M)
  3. 쿼리를 실행하세요
  4. 비용이 많이 드는 작업에 대한 실행 계획을 검토하세요
  5. 테이블 스캔, 인덱스 스캔 또는 고빈도 스캔을 찾으세요.ost 운영

다음을 통해 쿼리를 최적화하세요.

  • 적절한 인덱스 추가
  • 비용이 많이 드는 작업을 피하기 위해 쿼리를 다시 작성합니다.
  • 통계 업데이트
  • SELECT * 대신 특정 열 이름 사용
  • 불필요한 DISTINCT 또는 ORDER BY 절 피하기

10.6 손상된 데이터베이스 감지 및 수정

데이터베이스 손상은 성능 저하, 데이터 손실, 시스템 장애를 초래할 수 있습니다. 데이터베이스 상태를 유지하려면 손상을 신속하게 감지하고 해결하는 것이 매우 중요합니다.

데이터베이스 손상 지표

잠재적인 부패의 징후를 주의하세요.

  • 오류 메시지 SQL Server 오류 로그(오류 823, 824 또는 825)
  • 특정 테이블에 액세스할 때 예기치 않은 애플리케이션 오류 발생
  • 이전에는 빠르던 쿼리에서 느린 쿼리 성능
  • SQL Server 충돌 또는 예기치 않은 restarts
  • msdb.dbo.suspect_pages 테이블에 나타나는 의심스러운 페이지

DBCC CHECKDB를 사용하여 감지

DBCC 체크DB 데이터베이스 손상을 감지하는 주요 도구입니다. 문제를 조기에 발견하려면 정기적으로 실행하세요.

의심스러운 페이지 모니터링

SQL Server 자동으로 의심되는 페이지를 msdb 데이터베이스에 기록합니다.

SELECT 
    database_id,
    file_id,
    page_id,
    event_type,
    error_count,
    last_update_date
FROM msdb.dbo.suspect_pages
WHERE event_type IN (1,2,3)

반환된 모든 행은 즉각적인 주의가 필요한 손상 문제를 나타냅니다.

부패 방지 전략

  • CHECKSUM 옵션을 사용하여 페이지 검증 활성화
  • 정기적인 데이터베이스 백업을 유지하세요
  • 오류 수정 기능이 있는 안정적인 하드웨어를 사용하세요
  • 제조업체 도구를 사용하여 디스크 상태 모니터링
  • 정기적인 DBCC CHECKDB 실행 예약
  • 유지 SQL Server 최신 패치로 업데이트됨

복구 및 수리 옵션

손상이 감지되면 내장 도구를 시도할 수 있습니다. DBCC 체크DB 이를 수정하려면 다음과 같은 타사 도구를 사용하세요. DataNumen SQL Recovery 심각한 부패 문제를 다룰 수 있습니다.

11. 고급 모니터링 기술

11.1 쿼리 저장소 모니터링

Query Store는 다음에 소개되었습니다. SQL Server 2016은 쿼리 성능 데이터를 자동으로 수집합니다. 쿼리 동작, 실행 계획 및 성능 추세에 대한 귀중한 통찰력을 제공합니다.

쿼리 저장소 활성화

  1. SSMS 개체 탐색기에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭합니다.
  2. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 등록
  3. 클릭 쿼리 저장소 페이지
  4. In 작동 모드(요청됨), 고르다 읽기 쓰기
  5. 필요에 따라 추가 설정을 구성하세요
  6. OK

쿼리 성능 모니터링

개체 탐색기를 통해 쿼리 저장소 보고서에 액세스합니다.

  1. 개체 탐색기에서 데이터베이스 확장
  2. AI Physics로 발견의 범위 확장 쿼리 저장소
  3. 사용 가능한 보고서 중에서 선택하세요.
    • 회귀된 쿼리
    • 전체 리소스 소비
    • 리소스 소모가 가장 많은 쿼리
    • 강제 계획이 있는 쿼리
    • 추적된 쿼리

회귀 감지 계획

쿼리 저장소는 쿼리 실행 계획이 변경되고 성능이 저하되는 시점을 자동으로 감지합니다. 회귀된 쿼리 보고서를 검토하여 계획 변경의 영향을 받는 쿼리를 파악하세요.

강제 계획 관리

Query Store가 더 나은 실행 계획을 식별하면 강제로 SQL Server 사용하려면:

  1. 쿼리 저장소에서 쿼리를 엽니다.
  2. 원하는 계획을 마우스 오른쪽 버튼으로 클릭하세요
  3. 클라임웍스와 함께 하늘과 닿는 여정을 시작하세요 강제 계획

이렇게 하면 코드를 변경하지 않고도 성능이 즉시 향상됩니다.

11.2 인덱스 유지 관리 모니터링

인덱스 조각화는 시간이 지남에 따라 쿼리 성능을 저하시킵니다. 최적의 성능을 유지하려면 인덱스를 정기적으로 모니터링하고 유지 관리하세요.

조각화 검사

이 쿼리를 사용하여 인덱스 조각화를 확인하세요.

SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    ps.avg_fragmentation_in_percent,
    ps.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id 
    AND ps.index_id = i.index_id
WHERE ps.avg_fragmentation_in_percent > 10
    AND ps.page_count > 1000
ORDER BY ps.avg_fragmentation_in_percent DESC

이 쿼리는 리소스를 많이 소모할 수 있으므로 비수요 시간에 실행하세요.

페이지 밀도 분석

페이지 밀도는 인덱스 페이지가 얼마나 가득 찼는지 나타냅니다. 페이지 밀도가 낮으면 공간이 낭비되고 성능이 저하됩니다.

SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    ps.avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id 
    AND ps.index_id = i.index_id
WHERE ps.avg_page_space_used_in_percent < 75

재조직 vs 재건 결정

조각화 수준에 따라 인덱스 유지 관리 작업을 선택하세요.

  • 조각화 10-30%: ALTER INDEX REORGANIZE 사용
  • 조각화 > 30%: ALTER INDEX REBUILD 사용
  • 조각화 < 10%: 조치 필요 없음

재정비 작업은 리소스가 덜 필요하고 온라인으로 실행할 수 있습니다. 재구축 작업은 더 철저하지만 상당한 리소스를 소모합니다.

11.3 데이터베이스 통계 업데이트

데이터베이스 통계 도움말 SQL Server쿼리 최적화 프로그램은 효율적인 실행 계획을 생성합니다. 오래된 통계는 쿼리 성능 저하로 이어집니다.

자동 통계 재구성

자동 통계 업데이트 활성화:

ALTER DATABASE DatabaseName SET AUTO_UPDATE_STATISTICS ON
ALTER DATABASE DatabaseName SET AUTO_CREATE_STATISTICS ON

통계 상태 모니터링

통계가 마지막으로 업데이트된 시점을 확인하세요.

SELECT 
    OBJECT_NAME(s.object_id) AS TableName,
    s.name AS StatisticsName,
    STATS_DATE(s.object_id, s.stats_id) AS LastUpdated,
    sp.rows,
    sp.modification_counter
FROM sys.stats s
CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) sp
WHERE STATS_DATE(s.object_id, s.stats_id) < DATEADD(DAY, -7, GETDATE())
ORDER BY LastUpdated

필요할 때 통계를 수동으로 업데이트하세요.

UPDATE STATISTICS TableName WITH FULLSCAN

11.4 사용자 정의 성능 데이터 수집

sys.dm_os_performance_counters를 직접 쿼리하고 결과를 테이블에 저장하여 사용자 지정 성능 모니터링 솔루션을 만듭니다.

사용자 정의 컬렉션 스크립트 만들기

성능 카운터 데이터를 수집하기 위한 저장 프로시저를 작성합니다.

CREATE PROCEDURE dbo.CollectPerformanceCounters
AS
BEGIN
    INSERT INTO dbo.PerformanceHistory (
        SampleTime,
        CounterName,
        CounterValue
    )
    SELECT 
        GETDATE(),
        counter_name,
        cntr_value
    FROM sys.dm_os_performance_counters
    WHERE counter_name IN (
        'Page life expectancy',
        'Batch Requests/sec',
        'Buffer cache hit ratio'
    )
END

sys.dm_os_performance_counters 사용

성능 카운터를 직접 쿼리합니다.

SELECT 
    object_name,
    counter_name,
    instance_name,
    cntr_value,
    cntr_type
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Buffer Manager%'
ORDER BY counter_name

과거 데이터 저장

시간 경과에 따른 성능 지표를 저장할 테이블을 만듭니다.

CREATE TABLE dbo.PerformanceHistory (
    ID INT IDENTITY PRIMARY KEY,
    SampleTime DATETIME2 NOT NULL,
    PageLifeExpectancy BIGINT,
    BatchRequestsPerSec DECIMAL(18,4),
    BufferCacheHitRatio DECIMAL(5,2)
)

CREATE CLUSTERED COLUMNSTORE INDEX CCI_PerformanceHistory 
ON dbo.PerformanceHistory

피벗 데이터 저장 방법

샘플 시간당 한 행, 카운터당 한 열을 갖는 피벗 형식으로 데이터를 저장합니다. 이렇게 하면 샘플당 카운터당 한 행을 저장하는 방식에 비해 저장 공간이 줄어들고 쿼리 성능이 향상됩니다.

11.5 다중 서버 모니터링

다중 환경의 경우 SQL Server 인스턴스, 중앙 모니터링을 구현합니다.

중앙 집중식 모니터링 접근 방식

  • 별도의 서버에 전용 모니터링 데이터베이스를 만듭니다.
  • 모든 서버의 데이터를 중앙 저장소로 수집합니다.
  • SQL Server 수집 스크립트를 실행하기 위한 에이전트 작업
  • 네트워크 접근 가능한 성능 카운터 수집 구현

원격 서버 모니터링

카운터를 추가할 때 서버 이름을 지정하여 원격 서버에서 데이터를 수집하도록 성능 모니터를 구성하세요. 방화벽 규칙이 성능 모니터 트래픽을 허용하는지 확인하세요.

서버 간 보고

여러 서버의 성능을 비교하여 이상치와 용량 불균형을 파악하는 보고서를 작성합니다.

12. 모니터링 SQL Server 클라우드 환경에서

12.1 Azure SQL 데이터베이스 모니터링

Azure SQL Database는 온프레미스와 다른 기본 제공 모니터링 기능을 제공합니다. SQL Server.

Azure Monitor 통합

Azure Monitor는 다음을 포함하여 Azure SQL Database에서 자동으로 메트릭을 수집합니다.

  • DTU 또는 vCore 활용도
  • 스토리지 사용
  • 연결 통계
  • 교착 상태 및 시간 초과

Azure Portal이나 Azure Monitor API를 통해 이러한 메트릭에 액세스합니다.

내장된 모니터링 기능

Azure SQL Database에는 다음이 포함됩니다.

  • 자동 튜닝 권장 사항
  • 쿼리 성능 통찰력
  • 이상 탐지를 위한 지능형 통찰력
  • 내장된 경고 및 진단 기능ostICS

쿼리 성능 통찰력

이 기능은 리소스 사용량이 가장 많은 쿼리, 쿼리 기간 분석, 그리고 과거 성능 추세를 시각화하여 보여줍니다. Azure Portal에서 SQL Database 리소스로 이동하여 이 기능을 이용할 수 있습니다.

12.2 클라우드 기반 모니터링 도구

클라우드 플랫폼은 해당 환경에 최적화된 기본 모니터링 솔루션을 제공합니다.

  • Azure SQL Database용 Azure Monitor 및 Application Insights
  • RDS용 AWS CloudWatch SQL Server
  • 클라우드용 Google Cloud Monitoring SQL Server

이러한 도구는 클라우드 인프라와 완벽하게 통합되어 모든 클라우드 리소스에 대한 통합 모니터링을 제공합니다.

하이브리드 환경 모니터링

온프레미스와 클라우드에 걸친 하이브리드 배포의 경우 Redgate SQL Monitor, SolarWinds DPA와 같이 두 환경을 모두 지원하는 도구나 중앙 집중식 데이터 수집을 사용하는 맞춤형 솔루션을 사용하세요.

12.3 클라우드의 성능 차이

클라우드 SQL Server 환경에는 고유한 특성이 있습니다.

자원 할당 모델

클라우드 제공업체는 성능 지표 해석 방식에 영향을 미치는 다양한 리소스 할당 방식(DTU, vCore, 서버리스)을 사용합니다. 서비스 계층의 한계와 특성을 파악하세요.

확장 고려 사항

클라우드 환경은 동적 확장 기능을 제공합니다. 리소스 사용률을 모니터링하여 확장 또는 축소 시점을 결정하세요. 많은 클라우드 플랫폼은 성능 임계값을 기반으로 자동 확장 기능을 제공합니다.

13. 성능 모니터링 자동화

13.1 SQL Server 에이전트 채용

데이터 수집을 자동화하세요 SQL Server 수동 개입 없이 일관된 모니터링을 위한 에이전트 작업입니다.

예약된 데이터 수집

  1. SSMS에서 확장 SQL Server 에이전트
  2. 마우스 오른쪽 단추로 클릭 작업 선택 새 직업
  3. 작업 이름을 지정합니다(예: "성과 측정항목 수집")
  4. 단계 그리고 새로운 단계를 추가합니다
  5. 유형을 다음으로 설정하세요 Transact-SQL 스크립트
  6. 데이터 수집 스크립트를 입력하세요
  7. 일정 그리고 일정을 추가하세요
  8. 빈도 구성(예: 5분마다)
  9. OK 일자리를 창출하다

자동화 된보고

성과 보고서를 생성하고 이메일로 전송하는 작업을 만듭니다.

  1. 보고서를 생성하는 저장 프로시저를 만듭니다.
  2. 데이터베이스 메일을 사용하여 이메일을 통해 보고서를 보냅니다.
  3. 매일 또는 매주 실행되도록 작업을 예약합니다.

13.2 PowerShell 자동화

PowerShell은 강력한 자동화 기능을 제공합니다. SQL Server 성과 모니터.

성능 카운터 수집 스크립트

$counters = @(
    '\Processor(_Total)\% Processor Time',
    '\Memory\Available MBytes',
    '\PhysicalDisk(_Total)\Avg. Disk sec/Read'
)

$data = Get-Counter -Counter $counters -ComputerName 'SQLServer01'
$data.CounterSamples | Export-Csv 'C:\PerfLogs\counters.csv' -Append

WMI 쿼리

WMI를 사용하여 원격 서버에서 성능 데이터를 수집합니다.

$cpu = Get-WmiObject Win32_Processor -ComputerName 'SQLServer01'
$memory = Get-WmiObject Win32_OperatingSystem -ComputerName 'SQLServer01'

Write-Host "CPU Usage: $($cpu.LoadPercentage)%"
Write-Host "Available Memory: $([math]::Round($memory.FreePhysicalMemory/1MB,2)) GB"

자동 경고

임계값이 초과되면 메트릭을 확인하고 경고를 보내는 PowerShell 스크립트를 만듭니다.

$cpuThreshold = 80
$cpu = (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue

if ($cpu -gt $cpuThreshold) {
    Send-MailMessage -To 'dba@company.com' -Subject 'High CPU Alert' `
        -Body "CPU usage is $cpu%" -SmtpServer 'smtp.company.com'
}

13.3 모니터링 대시보드 만들기

더 나은 통찰력을 얻으려면 대화형 대시보드로 성과 데이터를 시각화하세요.

파워 BI 통합

  1. Power BI를 성과 데이터 테이블에 연결
  2. 주요 지표에 대한 시각화 만들기
  3. 시간 범위 및 서버 선택을 위한 슬라이서 추가
  4. Power BI 서비스에 대시보드 게시
  5. 자동 새로 고침 일정 구성

실시간 대시보드 생성

Grafana나 사용자 정의 웹 애플리케이션과 같은 도구를 사용하여 DMV와 성능 카운터를 직접 쿼리하는 실시간 대시보드를 만듭니다.

과거 추세 시각화

시간 경과에 따른 추세를 보여주는 선형 차트를 작성하세요.

  • CPU 사용률
  • 메모리 사용량
  • 디스크 I / O
  • 쿼리 성능
  • 연결 수

14. 사례 연구 및 실제 사례

14.1 사례 연구: 메모리 부족 해결

증상 식별

생산 SQL Server 피크 시간대에 쿼리 응답 속도가 느려지는 현상이 발생했습니다. 사용자들은 애플리케이션 시간 초과 및 성능 저하에 대해 불만을 토로했습니다.

반대 분석

성능 모니터 데이터 공개:

  • 페이지 수명 기대치가 50초로 낮아졌습니다(정상: >300초)
  • 버퍼 캐시 적중률이 85%로 떨어졌습니다(정상: >99%)
  • 보류 중인 메모리 보조금은 종종 5-10의 값을 보여주었습니다.
  • 물리적 디스크 읽기/초가 크게 증가했습니다.

해결 단계

  1. 검사 SQL Server 최대 메모리 설정 - 기본값(무제한)으로 설정되어 있는 것을 발견했습니다.
  2. 검토된 총 서버 메모리 대비 Tar서버 메모리 가져오기 - 상당한 격차가 나타났습니다.
  3. 운영 체제에 8GB를 남겨두기 위해 최대 서버 메모리를 구성했습니다.
  4. "메모리에 페이지 잠금" 권한이 활성화되었습니다. SQL Server 서비스 계정
  5. 서버에 32GB 추가 RAM을 추가했습니다.
  6. 1주일 동안 모니터링된 성능 – 페이지 수명 기대치가 500초 이상으로 안정화됨

결과 : 질의 응답 시간이 60% 향상되었고, 사용자 불만이 사라졌으며, 애플리케이션 성능이 정상으로 돌아왔습니다.

14.2 사례 연구: CPU 성능 최적화

증상 식별

A SQL Server 영업 시간 동안 CPU 사용률이 지속적으로 90%를 넘어 애플리케이션 성능이 저하되고 사용자가 불편함을 느꼈습니다.

반대 분석

성능 모니터링 결과:

  • % 프로세서 시간은 100%까지 자주 급증하면서 평균 92%였습니다.
  • 프로세서 대기열 길이가 지속적으로 4 이상(서버에 8개의 코어가 있음)
  • SQL 컴파일/초는 배치 요청/초의 25%였습니다(10% 미만이어야 함).
  • SQL 재컴파일/초는 배치 요청/초의 15%였습니다.

해결 단계

  1. DMV를 사용하여 CPU를 가장 많이 소모하는 쿼리를 식별합니다.
  2. 식별된 쿼리에 대한 실행 계획 분석
  3. 인덱스가 누락되어 대형 테이블에서 여러 개의 테이블 스캔이 발견되었습니다.
  4. 실행 계획 권장 사항을 기반으로 적절한 인덱스를 생성했습니다.
  5. 과도한 컴파일을 유발하는 동적 SQL을 식별했습니다.
  6. 매개변수화된 쿼리를 사용하도록 수정된 애플리케이션 코드
  7. 문제가 있는 저장 프로시저에 대한 계획 가이드 구현
  8. 자주 사용되는 테이블에 대한 업데이트된 통계

결과 : 업무 시간 동안 CPU 사용률이 평균 45%로 떨어졌습니다. 쿼리 실행 시간은 70% 향상되었고, 애플리케이션 응답 속도도 크게 향상되었습니다.

14.3 사례 연구: 디스크 I/O 병목 현상 해결

증상 식별

사용자들은 데이터 로딩 작업과 저녁 일괄 처리 중에 애플리케이션 응답이 매우 느리다고 보고했습니다.

반대 분석

성능 데이터는 다음과 같습니다.

  • 트랜잭션 로그 드라이브에서 평균 디스크 초/쓰기가 45ms를 초과했습니다.
  • 데이터 파일 드라이브에서 디스크 대기열 길이는 평균 12입니다.
  • 일괄 작업 중 디스크 시간이 몇 시간 동안 95% 이상으로 유지되었습니다.
  • 페이지 쓰기/초가 매우 높았습니다.

해결 단계

  1. 검증된 메모리 설정이 적절했으며 메모리 문제가 발견되지 않았습니다.
  2. 디스크 구성 분석 - 동일한 스핀들 세트에 있는 모든 파일 발견
  3. 전용 고속 SSD 드라이브에 분리된 트랜잭션 로그
  4. tempdb를 별도의 SSD 드라이브로 이동했습니다.
  5. 여러 개의 tempdb 데이터 파일(코어당 하나)을 구현했습니다.
  6. RAID 10 SSD 구성으로 업그레이드된 데이터 파일 드라이브
  7. 더 작은 거래 배치를 사용하도록 최적화된 배치 작업
  8. 일괄 작업 중 불필요한 테이블 스캔을 줄이기 위해 인덱스를 추가했습니다.

결과 : 평균 디스크 쓰기 속도가 3ms로 감소했습니다. 디스크 대기열 길이는 평균 1 미만으로 감소했습니다. 일괄 작업 완료 시간이 75% 단축되었습니다.

15. 미래 동향 SQL Server 모니터링

15.1 AI와 머신러닝 통합

인공지능과 머신러닝이 변화하고 있습니다 SQL Server 성과 모니터.

예측 분석

머신러닝 모델은 과거 데이터를 기반으로 미래의 자원 수요를 예측합니다. 이러한 시스템은 다음을 예측할 수 있습니다.

  • 저장 용량이 소진될 때
  • 최대 사용량 기간 동안 예상되는 CPU 및 메모리 요구 사항
  • 사용자에게 영향을 미치기 전에 쿼리 성능 저하
  • 유지 보수 작업을 위한 최적의 시간

이상 감지

AI 기반 도구는 성과 지표에서 비정상적인 패턴을 자동으로 감지합니다. 인간 관리자가 간과할 수 있는 이상 징후를 파악하고 정상적인 변화와 실제 문제를 구분합니다.

자동화된 수정

자체 복구 시스템은 다음과 같은 일반적인 문제를 감지하면 자동으로 해결합니다.

  • 해상도tar중단된 서비스
  • 최대 부하 동안 리소스 재할당
  • 알려진 문제에 대한 핫픽스 적용
  • 조각난 인덱스를 자동으로 다시 작성합니다.

15.2 클라우드 기반 모니터링 진화

클라우드 모니터링은 새로운 기능으로 계속 발전하고 있습니다.

통합 모니터링 플랫폼

최신 플랫폼은 다음 전반에 걸쳐 단일 창 가시성을 제공합니다.

  • 온-프레미스 SQL Server 인스턴스
  • 클라우드-hosted 데이터베이스
  • 하이브리드 환경
  • 애플리케이션 성능
  • 인프라 지표

관찰 가능성 추세

모니터링에서 관찰로의 전환은 다음을 강조합니다.

  • 출력에서 시스템 동작 이해
  • 메트릭, 로그 및 추적 상관 관계
  • 분산 시스템에 대한 심층적인 통찰력
  • 실시간 문제 진단

15.3 자가 치유 데이터베이스 시스템

미래 SQL Server 버전에 따라 자율성이 더 강화될 예정입니다.

자동 최적화

데이터베이스는 다음을 통해 지속적으로 최적화됩니다.

  • 작업 부하에 따라 인덱스를 자동으로 생성 및 삭제
  • 최적의 성능을 위한 구성 설정 조정
  • 비효율적인 쿼리를 투명하게 다시 작성
  • 동적으로 리소스 할당 관리

지능형 튜닝

고급 시스템은 성능 패턴을 학습하고 튜닝 권장 사항을 자동으로 적용하므로 DBA의 수동 개입 필요성이 줄어듭니다.

16. 결론 및 주요 요점

16.1 필수 모니터링 관행 요약

유효한 SQL Server 성과 모니터에는 도구, 기술, 모범 사례를 결합한 포괄적인 접근 방식이 필요합니다.

크리티컬 카운터 요약

다음과 같은 필수 카운터에 대한 모니터링 노력에 집중하세요.

  • 메모리: 페이지 수명 예상, 버퍼 캐시 적중률, 보류 중인 메모리 부여
  • CPU: % 프로세서 시간, 프로세서 대기열 길이
  • 디스크: 평균 디스크 초/읽기 및 쓰기, 디스크 대기열 길이
  • SQL Server: 배치 요청/초, 컴파일/초, 사용자 연결

모범 사례 요약

  • 정상 작업 중 기준선 설정
  • 기준선을 기반으로 지능형 알림 임계값을 설정합니다.
  • 정기적으로 성과 데이터를 검토하세요
  • 데이터 세분성을 통한 균형 모니터링 오버헤드
  • 추세 분석을 위해 장기 데이터 보관
  • 각 모니터링 시나리오에 적합한 도구를 사용하세요

16.2 지속적 개선 접근 방식

SQL Server 성과 모니터는 일회성 활동이 아니라 지속적인 개선이 필요한 지속적인 프로세스입니다.

정기 검토 주기

  • 매일: 알림 및 현재 성과 확인
  • 주간: 추세 검토 및 새로운 문제 식별
  • 월별: 장기 패턴 및 용량 요구 사항 분석
  • 분기별: 기준선 업데이트 및 모니터링 효과 검토

도구를 사용하여 최신 정보 유지

모니터링 도구와 기술을 최신 상태로 유지하세요.

  • 새로운 모니터링 기능을 평가하세요 SQL Server 업데이트
  • 새로운 타사 도구 테스트
  • 교육 및 컨퍼런스 참석
  • 참여 SQL Server 커뮤니티 포럼
  • 팀원들과 지식을 공유하세요

16.3 다음 단계

구현 SQL Server 체계적으로 성과를 모니터링합니다.

구현 로드맵

  1. 1 주 : 필수 카운터로 성능 모니터 설정
  2. 2 주 : 자동 수집을 위한 데이터 수집기 ​​세트 생성
  3. 3 주 : 정상 작업 중 기준선 설정
  4. 4 주 : 중요 임계값에 대한 알림 구성
  5. 월 2 : 추가 모니터링 도구(DMV, 확장 이벤트) 구현
  6. 월 3 : 사용자 정의 대시보드 및 보고서 개발
  7. 전진: 경험과 변화하는 요구 사항에 따라 모니터링을 개선합니다.

추가 자료

계속해서 알아보세요 SQL Server Microsoft 설명서, 커뮤니티 블로그, 그리고 실습을 통해 성능 모니터링을 활용하세요. 다양한 도구와 기법을 실험하여 환경에 가장 적합한 방법을 찾아보세요.

17. 자주 묻는 질문(FAQ)

17.1 m은 무엇입니까?ost 중대한 SQL Server 모니터링할 성능 카운터가 있나요?

most 임계 SQL Server 성능 카운터에는 다음이 포함됩니다.

  • 메모리: 페이지 수명 기대치(300초 이상이어야 함) 및 버퍼 캐시 적중률(99% 이상이어야 함)
  • CPU: % 프로세서 시간(지속된 값 <75%) 및 프로세서 대기열 길이(코어당 <2이어야 함)
  • 디스크: 평균 디스크 초/읽기 및 쓰기(<10-20ms) 및 디스크 대기열 길이(디스크당 <2)
  • SQL Server: 배치 요청/초, SQL 컴파일/초 및 보류 중인 메모리 부여(0이어야 함)

이러한 카운터는 시스템 상태에 대한 포괄적인 통찰력을 제공하고 병목 현상을 신속하게 식별하는 데 도움이 됩니다.

17.2 성과 데이터는 얼마나 자주 수집해야 합니까?

수집 빈도는 모니터링 목표에 따라 달라집니다.

  • 기준 모니터링: 1분(60초)마다
  • 활성 문제 해결: 짧은 기간 동안 15~30초마다
  • 장기 추세: 5분마다

고빈도 수집은 성능에 영향을 미치고 과도한 데이터를 생성할 수 있으므로 지속적으로 실행하지 마십시오. 일상적인 모니터링에는 긴 간격을 사용하고, 특정 문제를 조사할 때는 짧은 간격을 사용하십시오.

17.3 성능 모니터와의 차이점은 무엇입니까? SQL Server 프로파일러?

성능 모니터 및 SQL Server 프로파일러는 다양한 목적으로 사용됩니다.

성능 모니터 :

  • 모니터 시스템 및 SQL Server 성능 카운터
  • 리소스 활용도(CPU, 메모리, 디스크)를 추적합니다.
  • 낮은 오버헤드로 지속적인 모니터링에 적합
  • 시간 경과에 따른 집계 지표 제공

SQL Server 프로파일러:

  • 개별적인 흔적 SQL Server 이벤트 및 쿼리
  • 자세한 쿼리 실행 정보를 캡처합니다.
  • 오버헤드가 높아 연속 사용은 권장하지 않습니다.
  • 특정 쿼리 문제 해결에 가장 적합
  • 확장 이벤트로 인해 더 이상 사용되지 않습니다.

전반적인 시스템 모니터링에는 성능 모니터를 사용하고, 자세한 쿼리 수준 분석에는 확장 이벤트(프로파일러 아님)를 사용합니다.

17.4 성능 모니터가 영향을 미칠 수 있습니까? SQL Server 공연?

성능 모니터가 올바르게 구성된 경우 영향은 최소화됩니다. SQL Server 일반적으로 2% 미만의 오버헤드로 성능을 저하시킵니다. 그러나 과도한 모니터링은 다음과 같은 문제를 일으킬 수 있습니다.

  • 카운터가 너무 많으면 오버헤드가 증가합니다.
  • 매우 짧은 샘플 간격(15초 미만)으로 인해 리소스가 부족해집니다.
  • 지속적인 고주파 수집으로 대용량 로그 파일이 생성됩니다.

영향을 최소화하려면:

  • 필요한 카운터만 모니터링
  • 적절한 샘플 간격을 사용하세요(일상적인 모니터링의 경우 60초)
  • 데이터베이스 파일과 별도의 드라이브에 로그를 저장합니다.
  • 비수요 시간대에 리소스 집약적 모니터링 일정을 잡으세요

17.5 성능 모니터링 데이터는 얼마 동안 보관해야 합니까?

보존 기간은 분석 요구 사항과 저장 용량에 따라 달라집니다.

  • 최소 : 최근 문제 해결을 위한 3개월
  • 권장 사항 : 용량 계획 및 추세 분석을 위해 1~2년이 소요됩니다.
  • 최적 : 저장이 허용된다면 무기한으로, 과거 데이터는 시간이 지남에 따라 더욱 가치가 높아집니다.

성능 카운터 데이터는 압축률이 뛰어나고 상대적으로 적은 공간을 차지합니다. 오래된 데이터는 삭제하는 대신 별도의 저장소에 보관하는 것이 좋습니다. 많은 조직에서 수년간의 과거 데이터가 용량 계획 및 장기적인 추세 파악에 매우 중요하다는 것을 알고 있습니다.

17.6 주요 성능 카운터에 적합한 임계값은 무엇입니까?

알림을 위한 권장 임계값:

  • 메모리 부여 보류: 0보다 크면 알림
  • 페이지 수명 예상: < 300초일 때 경고
  • % 프로세서 시간: 5분 동안 80% 이상일 때 알림
  • 프로세서 대기열 길이: 코어당 2개 이상일 때 경고
  • 평균 디스크 초/읽기 또는 쓰기: 20ms 초과 시 경고
  • 디스크 대기열 길이: 디스크당 2개 이상일 때 경고
  • 차단된 프로세스: 5개 이상일 때 경고

기준 데이터와 특정 워크로드 특성에 따라 이러한 임계값을 조정하세요. 한 환경에서는 정상으로 보이는 것이 다른 환경에서는 문제를 나타낼 수 있습니다.

17.7 어떻게 모니터링합니까? SQL Server 원격으로 성능을 확인하시겠습니까?

원격 모니터 SQL Server 다음 방법을 사용하는 인스턴스:

  1. 성능 모니터 : 카운터를 추가할 때 원격 컴퓨터 이름을 지정하세요.
  2. PowerShell : Get-Counter와 함께 -ComputerName 매개변수를 사용하세요.
  3. DMV: SSMS를 통해 원격 서버에 연결하고 DMV를 쿼리합니다.
  4. 타사 도구: Most 모니터링 도구는 원격 서버 모니터링을 지원합니다.

방화벽 규칙이 성능 모니터 트래픽을 허용하고 원격 서버에 대한 적절한 권한이 있는지 확인하세요. 여러 서버의 경우, 전용 모니터링 서버와 데이터베이스를 활용한 중앙 집중식 모니터링을 구현하는 것이 좋습니다.

17.8 최고의 무료 도구는 무엇입니까? SQL Server 성과 모니터?

모니터링을 위해 사용할 수 있는 훌륭한 무료 도구가 몇 가지 있습니다. SQL Server 공연:

  • Windows 성능 모니터: 내장형, 포괄적이고 안정적
  • SSMS 활동 모니터: 추가 설치 없이 실시간 모니터링 가능
  • 확장 이벤트: 가벼운 이벤트 모니터링이 내장되어 있습니다. SQL Server
  • sp_WhoIsActive: 자세한 활동 모니터링을 위한 인기 있는 무료 저장 프로시저
  • DBA 대시: 포괄적인 기능을 갖춘 오픈소스 모니터링 도구
  • SQLWATCH: 실시간에 가까운 모니터링 기능을 갖춘 오픈 소스

most 조직, SSMS 도구 및 sp_WhoIsActive와 결합된 성능 모니터는 추가 비용 없이 뛰어난 모니터링 기능을 제공합니다.ost.

17.9 PerfMon 데이터를 분석을 위해 내보내려면 어떻게 해야 하나요?

다음 방법을 사용하여 성능 모니터 데이터를 내보냅니다.

CSV로 내보내기:

  1. 로그 파일이 로드된 상태에서 성능 모니터를 엽니다.
  2. 그래프를 마우스 오른쪽 버튼으로 클릭하고 선택하세요 데이터를 다른 이름으로 저장
  3. 왼쪽 메뉴에서 텍스트 파일(쉼표로 구분)(.csv)
  4. 위치를 선택하고 저장하세요
  5. 분석을 위해 Excel에서 열기

Relog 명령 사용:

relog input.blg -f csv -o output.csv

이 명령줄 유틸리티는 스프레드시트 애플리케이션에서 보다 쉽게 ​​분석할 수 있도록 바이너리 로그 파일(.blg)을 CSV 형식으로 변환합니다.

17.10 내장 옵션 대신 타사 모니터링 도구를 사용해야 하는 경우는 언제인가요?

다음과 같은 경우 타사 도구를 고려하세요.

  • 대량의 관리 SQL Server 인스턴스(10+)
  • 여러 데이터 센터에 대한 중앙 집중식 모니터링 필요
  • 예측 분석이나 이상 감지와 같은 고급 기능이 필요합니다.
  • 사고 관리 시스템과 통합된 경고를 원함
  • 규정 준수 보고 및 과거 분석 요구
  • 맞춤형 솔루션을 구축하고 유지 관리할 DBA 리소스가 부족합니다.
  • 이기종 데이터베이스 환경 모니터링(SQL Server, Oracle, MySQL 등)

내장 도구는 소규모 환경이나 맞춤형 모니터링 솔루션을 개발할 수 있는 숙련된 DBA가 있는 경우에 적합합니다. 타사 도구는 시간 절약, 고급 기능, 전문적인 지원을 통해 가치를 제공합니다.

18. 추가 리소스

18.1 공식 문서

Microsoft에서는 광범위한 문서를 제공합니다. SQL Server 성능 모니터:

18.2 권장 도구 및 다운로드

필수 도구 SQL Server 성능 모니터:

  • PAL 도구: https://github.com/clinthuffman/PAL
  • sp_WhoIsActive: http://whoisactive.com/
  • DBA 대시: https://dbadash.com/
  • SQLWATCH: https://github.com/marcingminski/sqlwatch
  • 응급 대응 키트(브렌트 오자): https://www.brentozar.com/first-aid/
  • SQL Server Management Studio : https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

18.3 커뮤니티 리소스

~로부터 배우다 SQL Server 커뮤니티:

  • SQL Server 본부: https://www.sqlservercentral.com/
  • 브렌트 오자 블로그: https://www.brentozar.com/blog/
  • SQL 쉑: https://www.sqlshack.com/
  • MSSQL팁: https://www.mssqltips.com/
  • Reddit r/SQLServer: https://www.reddit.com/r/SQLServer/
  • 스택 오버플로 SQL Server 태그 : https://stackoverflow.com/questions/tagged/sql-server

이러한 리소스는 경험이 풍부한 전문가의 튜토리얼, 문제 해결 조언 및 모범 사례를 제공합니다. SQL Server 전문가. 커뮤니티 포럼에 참여하면 다른 사람들의 경험에서 배우고 자신의 지식을 공유하는 데 도움이 됩니다.


저자에 관하여

위안 셩 10년 이상의 경력을 가진 선임 데이터베이스 관리자(DBA)입니다. SQL Server 환경 및 기업 데이터베이스 관리 분야에서 그는 금융 서비스, 의료, 제조 분야에서 수백 건의 데이터베이스 복구 시나리오를 성공적으로 해결했습니다.

원은 다음을 전문으로 합니다. SQL Server 데이터베이스 복구, 고가용성 솔루션그는 성능 최적화 분야에도 정통합니다. 풍부한 실무 경험을 바탕으로 수 테라바이트 규모의 데이터베이스 관리, 구현 등을 수행해 왔습니다. 항상 사용 가능한 가용성 그룹또한 핵심 비즈니스 시스템을 위한 자동화된 백업 및 복구 전략을 개발하고 있습니다.

Yuan은 기술적 전문성과 실용적인 접근 방식을 통해 데이터베이스 관리자와 IT 전문가가 복잡한 문제를 해결하는 데 도움이 되는 포괄적인 가이드를 만드는 데 중점을 둡니다. SQL Server 효율적으로 도전합니다. 그는 최신 정보를 유지합니다. SQL Server Microsoft의 새로운 릴리스와 진화하는 데이터베이스 기술을 활용하고, 정기적으로 복구 시나리오를 테스트하여 권장 사항이 실제 모범 사례를 반영하는지 확인합니다.

에 대한 질문이 SQL Server 복구가 필요하거나 추가적인 데이터베이스 문제 해결 지침이 필요하신가요? Yuan이 환영합니다. 피드백과 제안 이러한 기술적 자원을 개선하기 위해.

지금 공유 :