SQL Server/SQL Server Tip

SSMS – AlwaysOn Group Latency report

SungWookKang 2018. 3. 31. 14:18
반응형

 SSMS – AlwaysOn Group Latency report

 

·         Version : SQL Server 2014 SP2 later, SSMS 17.4 later

 

SQL Server에서 AlwaysOn가용성에 대한 Latency 분석을 하려면 XEvent(확장이벤트)  Performance Counter(성능 모니터) 사용하여 데이터를 캡처하고 분석하는 과정이 필요했다. 이러한 작업은 설정에 많은 시간이 소요되었을 뿐만 아니라 XEvent 대한 광범위한 지식이 필요하였다.

 

SQL Server 관리도구인 SQL Server Management Studio (SSMS) 17.4 버전 부터는AlwaysOn 가용성 그룹에 대한 Latency 대시보드 기능이 추가되었다.   대시보드에서는 데이터베이스 관리자가 가용성 그룹 가용성 복제본 데이터베이스의 현재 상태를 확인하는데 사용할 있다. 대시보드에는 1 복제본과 2 복제본 간의 대기 시간(시간 계산은 Commit LSN, Sent LSN 값을 사용하여 계산) 대한 정보를 제공하고 있다. 이러한 대시보드 정보를 바탕으로 가용성 그룹의 기본 복제본과 보조 복제본간의 로그 전송 흐름에서 병목현상을 쉽고 빠르게 파악할 있다.

 

SSMS에서 AlwaysOn Latency 대한 데이터 수집 설정 보고서를 확인하는 방법에 대해서 살펴본다.

 

SSMS 17.4 이상의 버전을 실행한다. SSMS 대한 최신 버전 다운로드는 아래 링크를 참고 한다.

-          Download SSMS :  https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

 


 

Always On High Availability 항목에서 [Availability Groups] – [사용자 가용성 그룹]에서 마우스 오른쪽을 클릭하여 [Show Dashboard] 실행 한다.


 

대시보드가 실행되면 Collect Latency Data 클릭 한다. 항목을 실행하면 데이터 수집을 위한 각종 기능이 백그라운드에서 진행되며 SQL Server Job 에이전트에 수집기 스케줄러가 등록된다.


 

데이터 수집 링크를 클릭하면 SSMS 가용성의 모든 복제본에 연결되어 데이터 수집 작업을 시작한다. 이때 복제본 보조 복제본의 SQL Server Agent 실행 중이어야 한다.


 

수집 기능 설정이 완료되면 아래와 같이 Job Agent 데이터 수집기 항목이 등록된 것을 확인할 있다.

 


 

스케줄러를 확인해보면 다양한  XEvent 등록된 것을 있다. 등록된 XEvent 실행하여 2 정도 데이터를 수집한다. 수집된 데이터는 TempDB AGInfo 테이블에 저장된다.


 

데이터 수집이 완료되면 Latency 대한 보고서를 확인한다. 이때 복제본 서버와 보조복제본 서버의 리포트를 따로 확인 한다.

Always On High Availability 그룹에서 마우스 오른쪽 버튼을 클릭하여 [Report] – [Standard Report] – [Primary Replica Latency] 실행한다.

 


 

복제본의 Latency 보고서에는 3개의 섹션이 있다. 번째 섹션에서는 AG 대한 복제본 정보를 제공한다.


 

번째 섹션에서는주 복제본의 Commit 복제 시간의 평균을 시각적으로 제공한다.

 

세번째 섹션은 커밋에 사용된 시간,  원격 복제 시간, 압축시간 로그 블록의 전송 지속시간에 대한 값을 제공한다.

 


 

 

보조복제본 보고서에는 보조복제본에서만 소요된 시간을 제공한다.




 

 

-          Local Flush – 로그 블록을 LDF파일에 기록하는데 소요된 평균 시간. 값은 Log_Flush_Start Log_Flush_Complete_Extended 이벤트를 사용하여 계산된다.

-          Decompression - 1차로 로그블럭을 수신한뒤 압축해제에 소요된 시간. SQL Server 2016 이상에서는 비동기 복제본에 대한 로그 전송이 압축되는 동안 동기 보조복제본에 대한 로그 전송은 압축되지 않는다.

-          Receive – USC 계층에서 로그 블록을 수신하고 추가 처리를 위해 대기열에 대기하는데 소요되는 시간

-          Send – 확인 메지시를 SQL USC 계층으로 보내는데 소요된 시간. 여기에는 보조복제본에서 주복제본까지 소요된 시간이 포함되지 않는다.

 

가용성 그룹 대기시간 데이터 수집기능은sysadmin(Windows 인증 전용) 계정에서만 사용할 있으며 현재 사용자 계정은 모든 복제본의 인스턴스 관리자 계정이어야 한다.

 

데이터 수집 기능에 대한 제약사항은 아래와 같다.

1.       한번에 하나의 가용성 그룹에 대한 대기 시간 데이터를 수집하는데에만 사용할 있다.

2.       TempDB 저장되는 데이터는 테이블이름이 하드코딩되어 하나의 컬렉션만 실행할 있다.

3.       TempDB 저장되므로 SQL Server 재시작되면 이전 기록된 데이터 정보가 손실된다.

4.       로그인 계정이 서버관리자 계정이어도 SQL 인증 사용자 또는 로그인에 대해서 수집 기능을 사용할 없다.

5.       Windows 인증만 지원하므로 도메인간 트러스트 없는 도메인간 배포에서는 작동하지 않는다.

6.       분산된 가용성 그룹에서는 기능이 작동하지 않는다.

7.       SQL Server 2014 SP2 이상에서 동작한다.

 

 

[참고자료]

https://blogs.msdn.microsoft.com/sql_server_team/new-in-ssms-always-on-availability-group-latency-reports/

 

 

 

2018-01-19 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

SQL Server, MS SQL, SSMS, Always On, 가용성 그룹, Latency Report, 복제 시간, commit time, High availability Group, AG,

반응형