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 이상에서 동작한다.
[참고자료]
2018-01-19 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
SQL Server, MS SQL, SSMS, Always On, 가용성 그룹, Latency Report, 복제 시간, commit time, High availability Group, AG,
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server Parallelism and Wait change (CXAPCKET, CXCONSUMER) (0) | 2018.03.31 |
---|---|
SQL Server Statistics Update row sampling rate and histogram step (0) | 2018.03.31 |
SQL Server 백업 압축의 압축률 확인 (0) | 2018.03.31 |
SQL Server 교착 상태 모니터링 (-T1222) (0) | 2018.03.31 |
SQL Operations Studio - Linux, MAC에서 사용할 수 있는 SQL DBMS 툴 (0) | 2018.03.31 |