

# 성능 개선 도우미에 대한 SQL 통계
<a name="sql-statistics"></a>

*SQL 통계*(SQL statistics)는 성능 개선 도우미에서 수집하는 SQL 쿼리에 대한 성능 관련 지표입니다. 성능 개선 도우미는 쿼리가 실행되는 초당 통계와 각 SQL 호출에 대한 통계를 수집합니다. SQL 통계는 선택한 시간 범위의 평균입니다.

SQL 다이제스트는 주어진 패턴을 갖지만 반드시 동일한 리터럴 값을 가질 필요는 없는 모든 쿼리의 합성입니다. 다이제스트는 리터럴 값을 물음표로 바꿉니다. 예: `SELECT * FROM emp WHERE lname= ?`. 이 다이제스트에는 다음 하위 쿼리가 구성될 수 있습니다.

```
SELECT * FROM emp WHERE lname = 'Sanchez'
SELECT * FROM emp WHERE lname = 'Olagappan'
SELECT * FROM emp WHERE lname = 'Wu'
```

모든 엔진은 다이제스트 쿼리에 대한 SQL 통계를 지원합니다.

이 기능에 대한 리전, DB 엔진 및 인스턴스 클래스 지원 정보는 [성능 개선 도우미 기능에 대한  Amazon Aurora DB 엔진, 리전 및 인스턴스 클래스 지원](USER_PerfInsights.Overview.Engines.md#USER_PerfInsights.Overview.PIfeatureEngnRegSupport) 섹션을 참조하세요.

**Topics**
+ [Aurora MySQL에 대한 SQL 통계](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.md)
+ [Aurora PostgreSQL에 대한 SQL 통계](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.md)

# Aurora MySQL에 대한 SQL 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL"></a>

Aurora MySQL은 다이제스트 수준에서만 SQL 통계를 수집합니다. 명령문 수준에는 통계가 표시되지 않습니다.

**Topics**
+ [Aurora MySQL에 대한 다이제스트 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation)
+ [Aurora MySQL에 대한 초당 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.per-second)
+ [Aurora MySQL에 대한 호출당 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation.per-call)
+ [Aurora MySQL에 대한 기본 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.primary)

## Aurora MySQL에 대한 다이제스트 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation"></a>

성능 개선 도우미는 `events_statements_summary_by_digest` 테이블에서 SQL 다이제스트 통계를 수집합니다. `events_statements_summary_by_digest` 테이블은 데이터베이스에 의해 관리됩니다.

다이제스트 테이블에는 제거 정책이 없습니다. 테이블이 가득 차면 AWS Management Console에 다음 메시지가 표시됩니다.

```
Performance Insights is unable to collect SQL Digest statistics on new queries because the table events_statements_summary_by_digest is full. 
Please truncate events_statements_summary_by_digest table to clear the issue. Check the User Guide for more details.
```

이 상황에서는 Aurora MySQL은 SQL 쿼리를 추적하지 않습니다. 이 문제를 해결하기 위해 성능 개선 도우미는 다음 조건이 모두 충족되면 자동으로 다이제스트 테이블을 자릅니다.
+ 테이블이 꽉 찼습니다.
+ 성능 개선 도우미가 성능 스키마를 자동으로 관리합니다.

  자동으로 관리하려면 `performance_schema` 파라미터를 `0`으로 설정하고 [**소스(Source)**]를 `user` 이외의 값으로 설정해야 합니다. 성능 개선 도우미가 성능 스키마를 자동으로 관리하지 않는 경우 [Aurora MySQL에서 성능 개선 도우미의 성능 스키마 개요](USER_PerfInsights.EnableMySQL.md) 섹션을 참조하세요.

AWS CLI에서 [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) 명령을 실행하여 파라미터 값의 소스를 확인합니다.

## Aurora MySQL에 대한 초당 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.per-second"></a>

Aurora MySQL DB 클러스터에 다음 SQL 통계를 사용할 수 있습니다.


| 측정치 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.count\$1star\$1per\$1sec | 초당 호출 수 | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait\$1per\$1sec | 초당 평균 지연 시간(단위: ms) | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join\$1per\$1sec | 초당 전체 조인 선택 | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check\$1per\$1sec | 초당 범위 검사 선택 | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan\$1per\$1sec | 초당 스캔 선택 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes\$1per\$1sec | 초당 병합 패스 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan\$1per\$1sec | 초당 스캔 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range\$1per\$1sec | 초당 범위 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows\$1per\$1sec | 초당 행 정렬 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected\$1per\$1sec | 초당 영향을 받는 행 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined\$1per\$1sec | 초당 검사된 행 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent\$1per\$1sec | 초당 전송된 행 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables\$1per\$1sec | 초당 생성된 임시 디스크 테이블 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables\$1per\$1sec | 초당 생성된 임시 테이블 | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time\$1per\$1sec | 초당 잠금 시간(ms) | 

## Aurora MySQL에 대한 호출당 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation.per-call"></a>

다음 지표에서는 SQL 문의 호출당 통계를 제공합니다.


| 측정치 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait\$1per\$1call | 호출당 평균 지연 시간(단위: ms)  | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join\$1per\$1call | 호출당 전체 조인 선택 | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check\$1per\$1call | 호출당 범위 검사 선택 | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan\$1per\$1call | 호출당 스캔 선택 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes\$1per\$1call | 호출당 병합 패스 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan\$1per\$1call | 호출당 스캔 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range\$1per\$1call | 호출당 범위 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows\$1per\$1call | 호출당 행 정렬 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected\$1per\$1call | 호출당 영향을 받는 행 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined\$1per\$1call | 호출당 검사된 행 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent\$1per\$1call | 호출당 전송된 행 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables\$1per\$1call | 호출당 생성된 임시 디스크 테이블 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables\$1per\$1call | 호출당 생성된 임시 테이블 | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time\$1per\$1call | 호출당 잠금 시간(ms) | 

## Aurora MySQL에 대한 기본 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.primary"></a>

Aurora MySQL DB 클러스터에 다음 SQL 통계를 사용할 수 있습니다.


| 측정치 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.count\$1star | 호출 | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait | 대기 시간(밀리초) | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join | 전체 조인 선택 | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check | 범위 확인 선택 | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan | 스캔 선택 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes | 병합 전달 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan | 스캔 정렬 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range | 정렬 범위 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows | 행 정렬 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected | 영향을 받는 행 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined | 검사된 행 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent | 전송된 행 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables | 만들어진 임시 디스크 테이블 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables | 만들어진 임시 테이블 | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time | 잠금 시간(밀리초) | 

# Aurora PostgreSQL에 대한 SQL 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL"></a>

성능 개선 도우미가 SQL 호출과 쿼리가 실행되는 초당 통계가 SQL 통계를 수집합니다. 모든 Aurora 엔진은 다이제스트 수준에서만 통계를 수집합니다.

다음에서 Aurora PostgreSQL 다이제스트 수준 통계에 대한 정보를 찾을 수 있습니다.

**Topics**
+ [Aurora PostgreSQL에 대한 다이제스트 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.digest)
+ [Aurora PostgreSQL에 대한 초당 다이제스트 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-second)
+ [Aurora PostgreSQL에 대한 호출당 다이제스트 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-call)
+ [Aurora PostgreSQL에 대한 기본 통계](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.primary)

## Aurora PostgreSQL에 대한 다이제스트 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.digest"></a>

SQL 다이제스트 통계를 보려면 `pg_stat_statements` 라이브러리를 로드해야 합니다. 이 라이브러리는 PostgreSQL 10과 호환되는 Aurora PostgreSQL DB 클러스터에 대해 기본적으로 로드됩니다. PostgreSQL 9.6과 호환되는 Aurora PostgreSQL DB 클러스터의 경우 이 라이브러리를 수동으로 활성화합니다. 이 라이브러리를 수동으로 활성화하려면 DB 인스턴스와 연결된 DB 파라미터 그룹의 `pg_stat_statements`에 `shared_preload_libraries`를 추가하세요. 그런 다음 DB 인스턴스를 재부팅합니다. 자세한 내용은 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

**참고**  
Performance Insights는 `pg_stat_activity`에서 잘리지 않은 쿼리에 대한 통계만 수집할 수 있습니다. 기본적으로 PostgreSQL 데이터베이스는 1,024바이트보다 긴 쿼리를 자릅니다. 쿼리 크기를 늘리려면 DB 인스턴스와 연결된 DB 파라미터 그룹에서 `track_activity_query_size` 파라미터를 변경합니다. 이 파라미터를 변경하면 DB 인스턴스를 재부팅해야 합니다.

## Aurora PostgreSQL에 대한 초당 다이제스트 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-second"></a>

다음 SQL 다이제스트 통계는 Aurora PostgreSQL DB 인스턴스에 제공됩니다.


| 측정치 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.calls\$1per\$1sec | 초당 호출 수 | 
| db.sql\$1tokenized.stats.rows\$1per\$1sec | 초당 행 | 
| db.sql\$1tokenized.stats.total\$1time\$1per\$1sec | 초당 평균 활성 실행(AAE) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit\$1per\$1sec | 초당 블록 히트 수 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read\$1per\$1sec | 초당 블록 읽기 수 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied\$1per\$1sec | 초당 더티 블록 수 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written\$1per\$1sec | 초당 블록 쓰기 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit\$1per\$1sec | 초당 로컬 블록 히트 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1read\$1per\$1sec | 초당 로컬 블록 읽기 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied\$1per\$1sec | 초당 로컬 블록 더티 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1written\$1per\$1sec | 초당 로컬 블록 쓰기 수 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written\$1per\$1sec | 초당 임시 쓰기 수 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read\$1per\$1sec | 초당 임시 읽기 수 | 
| db.sql\$1tokenized.stats.blk\$1read\$1time\$1per\$1sec | 초당 평균 동시 읽기 수 | 
| db.sql\$1tokenized.stats.blk\$1write\$1time\$1per\$1sec | 초당 평균 동시 쓰기 수 | 

## Aurora PostgreSQL에 대한 호출당 다이제스트 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-call"></a>

다음 지표에서는 SQL 문의 호출당 통계를 제공합니다.


| 측정치 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.rows\$1per\$1call | 호출당 행 수 | 
| db.sql\$1tokenized.stats.avg\$1latency\$1per\$1call | 호출당 평균 지연 시간(단위: ms) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit\$1per\$1call | 호출당 블록 히트 수 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read\$1per\$1call | 호출당 블록 읽기 수 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written\$1per\$1call | 호출당 블록 쓰기 수 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied\$1per\$1call | 통화 당 더티 블록 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit\$1per\$1call | 호출당 로컬 블록 히트 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1read\$1per\$1call | 호출당 로컬 블록 읽기 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied\$1per\$1call | 호출당 로컬 블록 더티 수 | 
| db.sql\$1tokenized.stats.local\$1blks\$1written\$1per\$1call | 호출당 로컬 블록 쓰기 수 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written\$1per\$1call | 호출당 임시 블록 쓰기 수 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read\$1per\$1call | 호출당 임시 블록 읽기 수 | 
| db.sql\$1tokenized.stats.blk\$1read\$1time\$1per\$1call | 호출당 읽기 시간(단위: ms) | 
| db.sql\$1tokenized.stats.blk\$1write\$1time\$1per\$1call | 호출당 쓰기 시간(단위: ms) | 

## Aurora PostgreSQL에 대한 기본 통계
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.primary"></a>

다음 SQL 통계는 Aurora PostgreSQL DB 인스턴스에서 사용 가능합니다.


| 지표 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.calls | 호출  | 
| db.sql\$1tokenized.stats.rows | 행  | 
| db.sql\$1tokenized.stats.total\$1time | 총 시간(밀리초) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit | 블록 히트  | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read | 블록 읽기  | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied | 더티 블록  | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written | 블록 쓰기  | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit | 로컬 블록 히트  | 
| db.sql\$1tokenized.stats.local\$1blks\$1read | 로컬 블록 읽기  | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied | 로컬 블록 더티 | 
| db.sql\$1tokenized.stats.local\$1blks\$1written | 로컬 블록 쓰기  | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written | 임시 쓰기  | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read | 임시 읽기  | 
| db.sql\$1tokenized.stats.blk\$1read\$1time | 평균 동시 읽기(밀리초) | 
| db.sql\$1tokenized.stats.blk\$1write\$1time | 평균 동시 쓰기(밀리초) | 

이러한 지표에 대한 자세한 내용은 PostgreSQL 설명서의 [pg\$1stat\$1statements](https://www.postgresql.org/docs/current/pgstatstatements.html)를 참조하세요.