본문 바로가기
IT/MSSQL

성능모니터 SQL서버 기본 모니터링 - 기본설정값 설명

by 베베야 2022. 7. 16.
728x90

윈도우 서버&MSSQL 데이터베이스를 운영하게되면 서버와 MSSQL의 자원을 모니터링을 진행한다.

비용을 지불하고 성능과 가시성이 좋은 다른 모니터링 솔루션을 구매하여 사용해도 되지만 윈도우에서는

무료 모니터링 툴인 성능모니터링(Perfmon) 이라는 프로그램을 지원한다.

 

다양한 항목들을 모니터링 할 수 있지만 기본적으로 서버와 DB에서 모니터링을 진행해야하는 항목을 추려보았으니 설정해서 모니터링을 진행해 보자.


 

[윈도우 서버 설정항목]

[Processor(CPU)] "% Processor Time"

 

[Memory] "Available MBytes"

 

[Physical Disk] "Avg. Disk sec/Read"

 

[Physical Disk] "Avg. Disk sec/Write"

 

[System] "Processor Queue Length"


[MSSQL 설정항목]

일반적인 데이터베이스 상태를 모니터링할 때 일반적인 서버 상태를 볼 때와 같이 카운터를 분류하는 쉬운 방법은 없지만 다음 카운터 집합을 통해 SQL Server 인스턴스의 일반적인 상태를 잘 알 수 있습니다.

[SQLServer:Access Methods] "Full scans/sec"

초당 무제한 전체 테이블 또는 인덱스 스캔 수입니다.  값도 0에 매우 가까워야 합니다 . 전체 스캔, 특히 인덱스 스캔이 완전히 피할 수 없고 항상 나쁜 것은 아니지만 이 숫자가 높으면 인덱스가 누락된 테이블을 조사하거나 잘못 작성된 쿼리를 찾는 것이 좋습니다.

[SQLServer:Access Methods] "Forwarded Records/sec"

전달된 레코드 포인터를 통해 힙에서 가져온 초당 행 수입니다. 전달된 레코드 포인터가 많다는 것은 원래 페이지에 더 이상 맞지 않는 행에 대한 업데이트가 많다는 것을 의미합니다. 거의 모든 경우에 이 숫자는 0에 매우 가깝습니다 . 테이블에 클러스터형 인덱스가 있고 채우기 비율이 올바르게 설정되어 있으면 전달된 레코드가 거의 발생하지 않습니다. 어떤 이유로 전달된 레코드 포인터가 많은 힙 테이블이 있는 경우 이를 수정하는 유일한 옵션은 힙을 다시 작성하거나(SQL Server 2008 이상이어야 함) 테이블에 클러스터형 인덱스를 추가하고 채우기 비율을 설정하는 것입니다. 바르게.

[SQLServer:Access Methods] "Page Splits / Sec"

초당 페이지 분할 수입니다. 적절한 페이지 분할 수를 결정하는 것은 여러 요인에 따라 다릅니다. 쓰기 횟수, 채우기 비율 설정 등 내 경험에 따르면 삽입/업데이트가 많은 워크로드가 있고 채우기 비율이 너무 높게 설정된 인덱스가 있는 경우 많은 페이지 분할이 발생합니다. 채우기 비율을 낮게 설정하여 이 문제를 해결할 때 너무 낮게 설정하지 않도록 주의하십시오. 이렇게 하면 데이터가 매우 분산되어 필요 이상으로 많은 디스크 공간이 사용됩니다.

[SQLServer:Buffer Manager] "Buffer Cache hit ratio"

이 비율은 디스크에서 읽을 필요 없이 메모리(SQL 버퍼 풀)에서 찾은 페이지의 백분율을 측정한 것입니다. 서버 시작 후 이 값은 모든 데이터를 디스크에서 읽어야 하므로 매우 낮지만 시간이 지나면서 평준화되어야 하므로 서버가 워밍업할 시간이 있을 때까지 실제로 측정되지 않아야 합니다. 일반적으로 높을수록 좋고 적중률을 높이려면 SQL Server에서 사용할 수 있는 메모리 양을 늘리는 것이 유일한 선택입니다. SQL Server 2014부터 SQL Server의 일부 버전에는 SSD를 사용하여 SQL Server 버퍼 풀의 크기를 늘릴 수 있는 버퍼 풀 확장 기능 이 있습니다.

[SQLServer:Buffer Manager] "Page life expectancy"

페이지가 참조되지 않고 메모리에 머무를 수 있는 시간(초)입니다. 많은 성능 카운터와 마찬가지로 이 카운터의 좋은 값은 작업 부하에 따라 크게 달라지지만 대부분의 모범 사례에서는 이 값이 300초 이상이어야 한다고 말합니다 . 이 측정값은 순시 측정값이며 롤링 평균이 아니므로 하루 중 많은 양의 큰 보고서 쿼리가 실행되는 시간이 있는 경우 처리해야 하는 데이터의 양을 감안할 때 이 값이 더 낮을 것으로 예상할 수 있습니다. 읽히다.

[SQLServer:Buffer Manager] "Checkpoint Pages / Sec"

이 카운터는 체크포인트 동안 SQL 버퍼 풀에서 디스크로 이동된 더티 페이지 수를 보여줍니다. 초당 이동될 것으로 예상되는 페이지 수는 시스템 및 사용에 따라 크게 달라집니다. 이 카운터가 정상보다 높으면 간접 검사점 을 사용하여 초당 플러시되는 페이지 수를 줄일 수 있습니다.

[SQLServer:Memory Manager] "Memory Grants Pending"

작업 공간 메모리가 부여되기를 기다리는 총 SQL Server 프로세스 수로 정의됩니다. 메모리 부족이 발생하지 않는 경우 이 값은 거의 항상 0이어야 합니다.  지속적으로 0보다 큰 값은 메모리 부족을 겪고 있다는 표시일 수 있으며 SQL Server에 더 많은 서버 메모리를 할당하는 것을 고려해야 합니다.

[SQLServer:Memory Manager] "Total Server Memory (KB)" & "Target Server Memory (KB)"

"총 서버 메모리(KB)"는 서버가 메모리 관리자를 사용하여 커밋한 메모리 양을 지정하고 "대상 서버 메모리(KB)"는 SQL Server가 잠재적으로 사용할 수 있는 메모리 양을 나타냅니다. 일정 시간이 지난 후에도 "총 서버 메모리(KB)"가 "대상 서버 메모리(KB)"보다 지속적으로 낮으면 이 SQL Server 인스턴스를 메모리가 더 적은 서버로 이동할 수 있습니다. 할당한 메모리입니다. 주의해야 할 점은 이 두 값이 동일하고 "Buffer Cache Hit Ratio"가 낮거나 "Memory Grants Pending"이 일관되게 0보다 높은 경우입니다. 이러한 경우 메모리 압력이 발생할 수 있습니다.

[SQLServer:Locks] "Average Wait Time (ms)" & "Lock Waits / Sec"

"평균 대기 시간(ms)"은 대기를 초래한 각 잠금 요청에 대해 대기한 평균 시간(밀리초)입니다. "잠금 대기/초"는 잠금 요청자가 기다려야 하는 초당 잠금 요청 수입니다.  "Average Wait Time(ms)"은 50ms 미만으로 매우 낮아야 하며 "Lock Waits/Sec"는 이상적으로는 0에 매우 가까워야 합니다 . 두 값 중 하나가 이 임계값을 초과하면 쿼리를 조사하기 시작해야 합니다. 일반적으로 이는 잘못 작성된 쿼리나 테이블이 누락되어 필요한 것보다 더 많은 잠금/차단을 초래한다는 의미입니다.

[SQLServer:SQL Statistics] "Batch Requests/Sec"

이 카운터는 초당 서버에서 수신되는 T-SQL 명령 수를 알려줍니다. 이 카운터에는 좋은 값이나 나쁜 값이 없으며 SQL Server 인스턴스가 얼마나 바쁜지를 측정하는 것입니다. 다른 카운터에 대해 수행한 것처럼 이 카운터에 대한 일반 기준 값이 있는 경우 이 카운터를 다시 참조하여 서버가 평소보다 사용량이 많거나 적은지 확인할 수 있습니다.

[SQLServer:General Statistics] "User Connections"

이것은 SQL Server에 대한 현재 연결 수를 측정합니다. "Batch Requests/Sec" 카운터와 마찬가지로 이 카운터는 단순히 SQL Server 인스턴스가 얼마나 바쁜지를 나타내는 좋은 지표이며, 일반적으로 더 많은 사용자가 더 많은 쿼리로 연결되어 더 많은 리소스를 사용하게 됩니다.

[SQLServer:SQL Statistics] "SQL Compilations/Sec" & "SQL Re-Compilations/Sec"

"SQL Compilations/Sec"은 SQL 문이 컴파일된 초당 횟수를 측정합니다. SQL Server 인스턴스가 일정 시간 동안 실행된 후에는 이 값이 안정화되어야 합니다(다시 시작한 후에는 계획 캐시가 다시 작성되므로 이 값이 높아집니다). "SQL-Recompilations/Sec"은 SQL 문이 재컴파일되어야 하는 초당 횟수입니다. 이는 많은 수의 삽입/업데이트/삭제로 인해 통계가 업데이트되거나 스키마가 변경된 후에 발생합니다. 이 값은 일반적으로 매우 낮아야 합니다.


이 외의 추가적인 Access Methods는 아래를 참조하기시 바랍니다.

 

[SQL Server] Access Methods 카운터 설명

Access Methods SQL Server 개체는 데이터베이스 내의 논리 페이지에 액세스하는 방법을 모니터링하는 카운터를 제공합니다. 디스크에 있는 데이터베이스 페이지에 대한 실제 액세스는 Buffer Manager 카

bebeya.tistory.com

 

반응형
그리드형

댓글