데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

Azure SQL Managed Instance  SQL Server 2016 Later에서 대기 통계 분석

 

·       Version : Azure SQL, SQL Server 2016 Later

 

대기 통계(Wait Statistics)는데이터베이스 엔진에서 무언가를 기다리는 쿼리를 식별하는데 도움이 되며 쿼리 지속시간이  이유를 분석할  있는 정보를 나타낸다이번 포스트에서는 워크로드가 대기하는 이유와 일부 리소스에서 대기중인 쿼리를 식별하는 방법에 대해서 살펴본다.

 

Azure SQL Managed Instance 사용하면 아래 DMV 사용하여 쿼리가 리소스를 대기하는 이유를 찾을  있다.

·       sys.dm_os_wait_stats : 인스턴스 레벨에서  대기 정보 반환

·       sys.query_store_wait_stats : 데이터베이스 레벨에서 대기중인 쿼리의 실행계획 반환

 

이러한 정보는 DMO/Query Store 사용하여 찾을  있다그러나 분석을 쉽게 하기 위해 무료 오픈소스인 QPI 라이브러리를 사용할  있다.

·       QPI  https://github.com/JocaPC/qpi

 

QPI 라이브러리를 설치하려면 아래 링크에서 SQL Server 버전에 대한 SQL 스크립트를 다운로드   있다. Query Store 의존하기 때문에 SQL Server 2016 이상, Azure SQL 에서 가능하다.

·       QPI Installation : https://github.com/JocaPC/qpi#installation

 

sys.dm_os_wait_stats  인스턴스 시작 이후 또는 통계를 마지막으로 재설정  이후에 대기 통계를 수집하므로 대기 통계의 스냅샷을 작성하거나 최소한 재설정을 해야한다아래 스크립트를 실행하여 QPI에서대기 통계를 재설정   있다.

exec qpi.snapshot_wait_stats

 

 절차는 인스턴스의 대기 통계를 재설정하고 관리형 인스턴스는  대기 통계를 수집을  시작한다워크로드가 실행되는 동안 qpi.wait_stats보기에서 대기 통계 정보를 읽을  있다결과를 보면 인스턴스의 기본 대기 통계는 INSTANCE_LOG_RATE_GOVERNON이며 Log Rate Governor 분류 된다대기 유형의 영향을 받는 쿼리를 찾으려면 실제 대기 유형 이름이 아닌 쿼리 저정소에서 Category 사용해야 하므로 Category 중요하다쿼리 저장소의 대기 통계는 대기 유형별로 기록되지 않는다.

 

 

대기가 발생한 Category 영향을 받는 상위 쿼리를 보려면 qpi.db_query_wait_stats 보기를 사용하여 Category 해당하는 대기 통계를 필터링   있다.

 

예제의 경우 관리형 인스턴스에서 로그 속도 제한에 도달하고 있으며원인은 인덱스 재구축으로 인한것일  있다데이터베이스가 여러개인 경우 데이터베이스마다 쿼리 저장소가 구성되므로  데이터베이스에서  쿼리를 실행해야한다.

 

 

[참고자료]

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2019/03/05/analyzing-wait-statistics-on-managed-instance/

 

 

2019-09-23/ Sungwook Kang / http://sungwookkang.com

 

 

Azure SQL, SQL Server Managed Instance, Query Store, QPI, sys.dm_os_wait_stats, sys.query_store_wait_stats



출처: https://sqlmvp.tistory.com/1348 [Database Lab]
No. Subject Author Date Views
2190 Azure에서 제공하는 데이터베이스 서비스 종류, AWS 및 GCP와 제품 비교 코난(김대우) 2020.12.25 277
2189 SQL Server 트랜잭션 로그 복원시 복원 시간이 오래 걸리는 현상 jevida(강성욱) 2020.02.28 1305
2188 SQL Server 2019 temp table을 사용한 워크로드에서 recompile 감소 jevida(강성욱) 2019.09.24 1637
» Azure SQL Managed Instance 및 SQL Server 2016 Later에서 대기 통계 분석 jevida(강성욱) 2019.09.24 1239
2186 SQL Server 2019에서 동기 통계 업데이트시 발생하는 쿼리 Blocking 확인 jevida(강성욱) 2019.09.21 1200
2185 SQL Server 2019 Log Writer Workers jevida(강성욱) 2019.09.21 1390
2184 SQL Server Login Timeout 디버깅 jevida(강성욱) 2019.09.19 1777
2183 SQL Server Worker Thread 기본 계산 jevida(강성욱) 2019.09.18 1305
2182 SQL Linux의 fsync 및 버퍼된 IO (버퍼된 쓰기중 오류가 발생하였을때 파일은 유효할까?) jevida(강성욱) 2019.09.17 1202
2181 SQL Server와 SQL Linux에서 인스턴스 파일 초기화 차이점 jevida(강성욱) 2019.09.14 1225
2180 BCP 실행시 동일 세션에서 여러개의 BULK INSERT 문으로 표시되는 이유 jevida(강성욱) 2019.09.13 1311
2179 삭제된 AD 그룹 계정으로 SQL Server 로그인 사례 (로그인 그룹 삭제 후 조치해야할 사항) jevida(강성욱) 2019.09.12 1114
2178 QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인 jevida(강성욱) 2019.09.11 1013
2177 ODBC 드라이버를 사용하여 SQL Server에서 Azure CosmosDB 쿼리 실행 jevida(강성욱) 2019.09.10 1075
2176 Azure SQL Managed Instance에서 로컬 스토리지 사용량 모니터링 jevida(강성욱) 2019.09.09 1090
2175 SQL Server Enterprise Edition 에서 CPU를 40 Core 이상 사용하지 못하는 현상 jevida(강성욱) 2019.09.04 1227
2174 SQL Server Agent Job에서 sysploicy_purge_history 작업실패 jevida(강성욱) 2019.09.04 1265
2173 where절 case관련... BGT051 2019.09.03 1318
2172 SQL Server에서 테이블 이름을 변경하지 않고 테이터만 교체하기 jevida(강성욱) 2019.05.03 1887
2171 SQL Server master 데이터베이스 정리 jevida(강성욱) 2019.04.23 4714





XE Login