데이터베이스 부하 - Amazon Aurora

데이터베이스 부하

데이터베이스 로드(DB 로드)는 데이터베이스의 세션 활동 수준을 측정합니다. DBLoad는 성능 개선 도우미의 주요 지표이며, 성능 개선 도우미는 1초마다 DB 로드를 수집합니다.

활성 세션

데이터베이스 세션은 관계형 데이터베이스와 애플리케이션의 대화를 나타냅니다. 활성 세션이란 DB 엔진에 작업을 제출하여 현재 응답 대기 중인 연결 세션을 말합니다.

세션은 CPU에서 실행 중이거나 리소스가 계속 진행될 수 있도록 대기 중일 때 활성화됩니다. 예를 들어 활성 세션은 페이지(또는 블록)가 메모리로 읽힐 때까지 기다린 다음 페이지에서 데이터를 읽는 동안 CPU를 사용할 수 있습니다.

평균 활성 세션

평균 활성 세션(AAS)은 성능 개선 도우미의 DBLoad 지표에 대한 단위입니다. 데이터베이스에서 동시에 활성화된 세션 수를 측정합니다.

성능 개선 도우미는 매초 쿼리를 동시에 실행하는 세션 수를 샘플링합니다. 각 활성 세션에 대해 성능 개선 도우미는 다음 데이터를 수집합니다.

  • SQL 문

  • 세션 상태(CPU에서 실행 중이거나 대기 중)

  • Host

  • SQL을 실행하는 사용자

성능 개선 도우미는 특정 기간 동안의 총 세션 수를 총 샘플 수로 나눠 AAS를 계산합니다. 예를 들어 다음 표는 1초 간격으로 채취된 실행 중인 쿼리의 연속된 5개 샘플을 보여 줍니다.

샘플 쿼리를 실행 중인 세션 수 AAS 계산
1 2 2 총 세션 2회/샘플 1개
2 0 1 총 세션 2회/샘플 2개
3 4 2 총 세션 6회/샘플 3개
4 0 1.5 총 세션 6회/샘플 4개
5 4 2 총 세션 10회/샘플 5개

이전 예시에서 시간 간격에 대한 DB 로드는 2 AAS입니다. 이 측정은 5개의 샘플을 채취한 간격 동안 평균적으로 2회의 세션이 동시에 활성화 상태였음을 의미합니다.

평균 활성 실행

초당 평균 활성 실행(AAE)은 AAS와 관련이 있습니다. Performance Insights는 AAE를 계산하기 위해 쿼리의 총 실행 시간을 시간 간격으로 나눕니다. 다음 표는 앞의 표와 동일한 쿼리의 AAE 계산을 보여 줍니다.

경과 시간(초) 총 실행 시간(초) AAE 계산
60 120 2 120초 실행/60초 경과
120 120 1 120초 실행/120초 경과
180 380 2.11 380초 실행/180초 경과
240 380 1.58 380초 실행/240초 경과
300 600 2 600초 실행/300초 경과

대부분의 경우 쿼리의 AAS와 AAE는 거의 동일합니다. 하지만 계산에 입력되는 데이터 원본이 다르기 때문에 계산 결과가 약간 다른 경우가 많습니다.

차원

db.load 지표는 차원이라는 하위 구성 요소로 구분할 수 있다는 점에서 다른 시계열 지표와 다릅니다. 차원을 DBLoad 지표의 다양한 특성에 대한 "분할 기준" 범주로 생각할 수 있습니다.

성능 문제를 진단할 때 다음과 같은 차원이 가장 유용한 경우가 많습니다.

Aurora 엔진의 전체 차원 목록은 차원을 기준으로 분할된 DB 로드 섹션을 참조하세요.

대기 이벤트

대기 이벤트란 SQL 문이 계속 실행되려면 특정 이벤트가 발생할 때까지 기다려야 합니다. 대기 이벤트는 작업이 방해되는 위치를 나타내므로 DB 로드에 대해 중요한 측정기준이나 범주입니다.

모든 활성 세션이 CPU에서 실행 중이거나 대기 중입니다. 예를 들어 세션은 메모리에서 버퍼를 검색하거나 계산을 수행하거나 프로시저 코드를 실행할 때 CPU를 사용합니다. 세션에서 CPU를 사용하지 않는 경우 메모리 버퍼가 비어 있거나 읽을 데이터 파일 또는 기록할 로그가 나올 때까지 대기할 수 있습니다. 세션이 리소스를 기다리는 시간이 길수록 CPU에서 실행되는 시간이 줄어듭니다.

데이터베이스를 튜닝할 때 세션이 기다리는 리소스를 찾으려고 하는 경우가 많습니다. 예를 들어 두 개 또는 세 개의 대기 이벤트가 DB 로드의 90%를 차지할 수 있습니다. 이 측정은 평균적으로 활성 세션이 소수의 리소스를 기다리는 데 대부분의 시간을 소비한다는 것을 의미합니다. 이러한 대기의 원인을 찾을 수 있는 경우 해결 방법을 시도할 수 있습니다.

대기 이벤트는 DB 엔진마다 다릅니다.

상위 SQL

대기 이벤트는 병목 현상을 표시하는 반면, 상위 SQL은 DB 로드에 가장 많이 기여하는 쿼리를 보여줍니다. 예를 들어 현재 데이터베이스에서 여러 쿼리가 실행 중이더라도 단일 쿼리가 DB 부하의 99%를 소비할 수 있습니다. 이 경우 부하가 높으면 쿼리에 문제가 있음을 나타낼 수 있습니다.

기본적으로 성능 개선 도우미 콘솔에는 데이터베이스 부하에 영향을 미치는 상위 SQL 쿼리가 표시됩니다. 콘솔에는 각 문에 관련된 통계도 표시됩니다. 특정 문의 성능 문제를 진단하기 위해 실행 계획을 검사할 수 있습니다.