

# 성능 개선 도우미의 상위 SQL 탭을 사용하여 쿼리 분석
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics"></a>

Amazon RDS 성능 개선 도우미 대시보드에서 **상위 차원(Top dimensions)** 테이블의 **상위 SQL(Top SQL)** 탭에서 실행 중인 쿼리 및 최근 쿼리에 대한 정보를 확인할 수 있습니다. 이 정보를 사용하여 쿼리를 튜닝할 수 있습니다.

**Topics**
+ [

## 상위 SQL(Top SQL) 탭 개요
](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL)
+ [

# 성능 개선 도우미 대시보드에서 더 많은 SQL 텍스트에 액세스
](USER_PerfInsights.UsingDashboard.SQLTextSize.md)
+ [

# 성능 개선 도우미 대시보드에서 SQL 통계 보기
](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.AnalyzingSQLLevel.md)

## 상위 SQL(Top SQL) 탭 개요
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL"></a>

기본적으로 **상위 SQL** 탭은 DB 로드에 가장 많은 영향을 미치는 25개의 쿼리를 보여줍니다. 쿼리를 조정하는 데 도움이 되도록 쿼리 텍스트 및 SQL 통계와 같은 정보를 분석할 수 있습니다. **상위 SQL(Top SQL)** 탭에 표시될 통계를 선택할 수도 있습니다.

**Topics**
+ [

### SQL 텍스트
](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.text)
+ [

### SQL 통계
](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.statistics)
+ [

### 대기별 로드(AAS)
](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Load-by-waits)
+ [

### SQL 정보 보기
](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.SQL-information)
+ [

### 통계 기본 설정 선택
](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Preferences)

### SQL 텍스트
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.text"></a>

기본적으로 **상위 SQL** 테이블의 각 행에는 각 문에 대해 500바이트의 텍스트가 표시됩니다.

![\[SQL 텍스트\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/sql-text-oracle.png)


기본 500바이트 이상의 SQL 텍스트를 보는 방법에 대한 자세한 내용은 [성능 개선 도우미 대시보드에서 더 많은 SQL 텍스트에 액세스](USER_PerfInsights.UsingDashboard.SQLTextSize.md) 섹션을 참조하세요.

*SQL 다이제스트(SQL digest)*는 구조적으로 유사하지만 리터럴 값이 다를 수 있는 여러 실제 쿼리의 조합입니다. 다이제스트는 하드 코딩된 값을 물음표로 바꿉니다. 예를 들어, 다이제스트는 `SELECT * FROM emp WHERE lname= ?`가 될 수 있습니다. 이 다이제스트에는 다음 하위 쿼리가 포함될 수 있습니다.

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

다이제스트에서 리터럴 SQL 문을 보려면 쿼리를 선택한 다음 더하기 기호 (\$1) 를 선택합니다. 다음 예에서 선택한 쿼리는 다이제스트입니다.

![\[선택된 SQL 다이제스트\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_4b.png)


**참고**  
SQL 다이제스트는 유사한 SQL 문을 그룹화하지만, 민감한 정보는 삭제하지 않습니다.

성능 개선 도우미는 Oracle SQL 텍스트를 **Unknown**으로 표시할 수 있습니다. 각 상황에서 텍스트의 상태는 다음과 같습니다.
+ `SYS` 이외의 Oracle 데이터베이스 사용자가 활성 상태이지만 현재 SQL을 실행하고 있지 않은 경우입니다. 예를 들어 병렬 쿼리가 완료되면 쿼리 조정자는 도우미가 세션 통계를 전송하기 위해 처리하도록 기다립니다. 대기 기간 동안 쿼리 텍스트가 **Unknown**으로 표시됩니다.
+ Standard Edition 2의 RDS for Oracle 인스턴스의 경우 Oracle Resource Manager가 병렬 스레드의 수를 제한합니다. 이 작업을 수행하는 백그라운드 프로세스로 인해 쿼리 텍스트가 **Unknown**으로 표시됩니다.

### SQL 통계
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.statistics"></a>

*SQL 통계(SQL statistics)*는 SQL 쿼리에 대한 성능 관련 지표입니다. 예를 들어 성능 개선 도우미는 초당 실행 횟수 또는 초당 처리된 행을 표시할 수 있습니다. 성능 개선 도우미는 가장 일반적인 쿼리에 대한 통계만 수집합니다. 일반적으로 이러한 쿼리는 성능 개선 도우미 대시보드에 표시된 부하별로 상위 쿼리와 일치합니다.

**상위 SQL(Top SQL)** 테이블의 모든 라인은 다음 예에 나온 것처럼 SQL 문 또는 다이제스트에 대한 관련 통계를 보여줍니다.

![\[상위 SQL\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_4.png)


성능 개선 도우미는 SQL 통계에 대해 `0.00` 및 `-`(알 수 없음)을 보고할 수 있습니다. 이 상황은 다음 조건에서 발생합니다.
+ 샘플이 하나만 존재합니다. 예를 들어, 성능 개선 도우미는 `pg_stat_statements` 보기에서 여러 개의 샘플을 기반으로 RDS PostgreSQL 쿼리의 변경 비율을 계산합니다. 워크로드가 짧은 시간 동안 실행되면 성능 개선 도우미에서 샘플을 하나만 수집할 수 있으며 이런 경우 변경 비율을 계산할 수 없습니다. 값을 알 수 없으므로 대시(`-`)로 표시됩니다.
+ 두 샘플의 값이 같은 경우입니다. 변경이 발생하지 않았기 때문에 성능 개선 도우미가 변경 비율을 계산할 수 없으므로 비율을 `0.00`으로 보고합니다.
+ RDS PostgreSQL 문에 유효한 식별자가 없는 경우입니다. PostgreSQL은 구문 분석 및 분석 후에만 문에 대한 식별자를 만듭니다. 따라서 PostgreSQL 내부 인 메모리 구조에 식별자가 없는 상태로 문이 존재할 수 있습니다. 성능 개선 도우미는 초당 한 번 내부 인 메모리 구조를 샘플링하므로 하나의 샘플에 대해서만 대기 시간이 짧은 쿼리가 나타날 수 있습니다. 이 샘플에 대해 쿼리 식별자를 사용할 수 없는 경우 성능 개선 도우미는 이 문을 통계와 연결할 수 없습니다. 값을 알 수 없으므로 대시(`-`)로 표시됩니다.

Amazon RDS엔진의 SQL 통계에 대한 설명을 보려면 [성능 개선 도우미에 대한 SQL 통계](sql-statistics.md) 섹션을 참조하세요.

### 대기별 로드(AAS)
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Load-by-waits"></a>

**상위 SQL(Top SQL)**에서 **대기 시간별 로드(AAS)(Load by waits (AAS))** 열은 각 상위 로드 항목과 연결된 데이터베이스 로드의 비율을 나타냅니다. 이 열에는 현재 **DB 부하 차트**에서 어떤 그룹화 기준을 선택하든 그 기준에 따라 해당 항목의 부하가 반영됩니다. 평균 활성 세션(AAS)에 대한 자세한 내용은 [평균 활성 세션](USER_PerfInsights.Overview.ActiveSessions.md#USER_PerfInsights.Overview.ActiveSessions.AAS) 섹션을 참조하세요.

예를 들어 **DB 로드(DB load)** 차트를 대기 상태별로 그룹화할 수 있습니다. 상위 부하 항목 테이블에서 SQL 쿼리를 검사합니다. 이 경우 **DB Load by Waits(대기별 DB 로드)** 막대는 쿼리가 영향을 미치는 대기 상태의 정도를 크기, 세그먼트 및 컬러 코드로 표시합니다. 또한 선택한 쿼리에 영향을 미치는 대기 상태를 표시합니다.

![\[대기 시간별 DB 부하\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_6.png)


### SQL 정보 보기
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.SQL-information"></a>

**상위 SQL(Top SQL)** 테이블에서 명령문을 열어 해당 정보를 볼 수 있습니다. 맨 아래 창에 정보가 나타납니다.

![\[리터럴 쿼리가 선택된 상위 SQL 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf-insights-sql-ids-open.png)


상위 SQL 탭에서 SQL 문과 연결된 다음과 같은 식별자(ID) 유형을 볼 수 있습니다.
+ **SQL ID 지원** – SQL ID의 해시 값입니다. 이 값은 AWS Support를 이용할 때 SQL ID를 참조하는 용도로만 사용됩니다. AWS Support는 실제 SQL ID 및 SQL 텍스트에 액세스할 수 없습니다.
+ **Support Digest ID(다이제스트 ID 지원)** – 다이제스트 ID의 해시 값입니다. 이 값은 AWS Support를 이용할 때 다이제스트 ID를 참조하는 용도로만 사용됩니다. AWS Support는 실제 다이제스트 ID 및 SQL 텍스트에 액세스할 수 있는 권한이 없습니다.

### 통계 기본 설정 선택
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Preferences"></a>

**기본 설정(Preferences)** 아이콘을 선택하여 **상위 SQL(Top SQL)** 탭에 표시되는 통계를 제어할 수 있습니다.

![\[통계 기본 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf-insights-sql-ids-preferences-icon.png)


**기본 설정** 아이콘을 선택하면 **기본 설정** 창이 열립니다. 다음 스크린샷은 **기본 설정** 창의 예입니다.

![\[기본 설정 창\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf-insights-sql-ids-preferences.png)


**상위 SQL(Top SQL)** 탭에 표시하려는 통계를 활성화하고 마우스를 사용하여 창 아래쪽으로 스크롤한 다음 **계속(Continue)**을 선택합니다.

Amazon RDS 엔진의 초당 또는 호출당 통계에 대한 자세한 내용은 [성능 개선 도우미에 대한 SQL 통계](sql-statistics.md)의 엔진별 SQL 통계 섹션을 참조하십시오.

# 성능 개선 도우미 대시보드에서 더 많은 SQL 텍스트에 액세스
<a name="USER_PerfInsights.UsingDashboard.SQLTextSize"></a>

기본적으로 **상위 SQL(Top SQL)** 테이블의 각 행에는 각 SQL 문에 대해 500바이트의 SQL 텍스트가 표시됩니다.

![\[500바이트의 SQL\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf-insights-top-sql-bytes.png)


SQL 문이 500바이트를 초과하면 **상위 SQL** 테이블 아래의 **SQL 텍스트** 섹션에서 더 많은 텍스트를 볼 수 있습니다. 이 경우 **SQL 텍스트**에 표시된 쿼리의 최대 길이는 4KB입니다. 이 제한은 콘솔에 의해 도입되며 데이터베이스 엔진에서 설정한 제한에 따라 달라집니다. **SQL 텍스트**에 표시된 텍스트를 저장하려면 **다운로드**를 선택합니다.

**Topics**
+ [

## Amazon RDS 엔진 텍스트 크기 제한
](#sql-text-engine-limits)
+ [

# Amazon RDS for PostgreSQL DB 인스턴스에 대한 SQL 텍스트 한도 설정
](USER_PerfInsights.UsingDashboard.SQLTextLimit.md)
+ [

# 성능 개선 도우미 대시보드에서 SQL 텍스트 보기 및 다운로드
](view-download-text.md)

## Amazon RDS 엔진 텍스트 크기 제한
<a name="sql-text-engine-limits"></a>

SQL 텍스트를 다운로드할 때 데이터베이스 엔진은 최대 길이를 결정합니다. 다음의 엔진별 제한에 해당하는 SQL 텍스트를 다운로드할 수 있습니다.


| DB 엔진 | 다운로드한 텍스트의 최대 길이 | 
| --- | --- | 
| Amazon RDS for MySQL 및 MariaDB | 성능 스키마가 활성화된 경우 길이는 4,096바이트로 고정됩니다. 성능 스키마가 활성화되지 않은 경우 길이는 65,535바이트로 고정됩니다. | 
| Amazon RDS for Microsoft SQL Server | 4,096자 | 
| Amazon RDS for Oracle | 1,000바이트 | 

성능 개선 도우미 콘솔의 **SQL 텍스트** 섹션은 엔진이 반환하는 최대값까지 표시합니다. 예들 들어, MySQL은 최대 1KB를 성능 개선 도우미에 반환하며, 원래 쿼리가 더 큰 경우에도 1KB만 수집하고 표시할 수 있습니다. 따라서 **SQL 텍스트**의 쿼리를 보거나 다운로드하면 성능 개선 도우미가 동일한 바이트 수를 반환합니다.

AWS CLI 또는 API, 성능 개선 도우미에는 콘솔이 적용하는 4KB 제한이 없으며, `DescribeDimensionKeys` 및 `GetResourceMetrics`로 최대 500바이트를 반환합니다.

**참고**  
`GetDimensionKeyDetails`는 전체 쿼리를 반환하지만 크기에는 엔진 제한이 적용됩니다.

# Amazon RDS for PostgreSQL DB 인스턴스에 대한 SQL 텍스트 한도 설정
<a name="USER_PerfInsights.UsingDashboard.SQLTextLimit"></a>

Amazon RDS for PostgreSQL은 텍스트를 다르게 처리합니다. DB 인스턴스 파라미터 `track_activity_query_size`를 사용하여 텍스트 크기 제한을 설정할 수 있습니다. 이 파라미터에는 다음과 같은 특성이 있습니다.

기본 텍스트 크기  
Amazon RDS for PostgreSQL 버전 9.6에서 `track_activity_query_size` 파라미터에 대한 기본 설정은 1,024바이트입니다. Amazon RDS for PostgreSQL 버전 10이상에서 기본 설정은 4,096바이트입니다.

최대 텍스트 크기  
Amazon RDS for PostgreSQL 버전 12 이하에 대한 `track_activity_query_size` 제한은 102,400바이트입니다. 버전 13 이상에서는 최대 1MB입니다.  
엔진이 성능 개선 도우미에 1MB를 반환하면 콘솔에는 처음 4KB만 표시됩니다. 쿼리를 다운로드하면 전체 1MB를 받을 수 있습니다. 이 경우 보기 및 다운로드하면 다른 바이트 수가 반환됩니다. `track_activity_query_size` DB 파라미터에 대한 자세한 내용은 PostgreSQL 설명서에서 [런타임 통계](https://www.postgresql.org/docs/current/runtime-config-statistics.html)를 참조하세요.

SQL 텍스트 크기를 늘리려면 `track_activity_query_size` 제한을 늘립니다. 파라미터를 수정하려면 Amazon RDS for PostgreSQL DB 인스턴스와 연결된 파라미터 그룹에서 파라미터 설정을 변경하세요.

**인스턴스가 기본 파라미터 그룹을 사용할 때 설정 변경**

1. 적절한 DB 엔진 및 DB 엔진 버전에 대해 새로운 DB 인스턴스 파라미터 그룹을 생성합니다.

1. 새 파라미터 그룹에 파라미터를 설정합니다.

1. 새 파라미터 그룹을 DB 인스턴스에 연결합니다.

DB 인스턴스 파라미터 설정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 단원을 참조하세요.

# 성능 개선 도우미 대시보드에서 SQL 텍스트 보기 및 다운로드
<a name="view-download-text"></a>

성능 개선 도우미 대시보드에서 SQL 텍스트를 보기 및 다운로드할 수 있습니다.

**성능 개선 도우미 대시보드에서 더 많은 SQL 텍스트를 보려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **성능 개선 도우미**을 선택합니다.

1. DB 인스턴스를 선택합니다.

1. 성능 개선 도우미 대시보드에서 아래로 스크롤하여 **상위 SQL** 탭으로 이동합니다.

1. 더하기(\$1) 기호를 선택하여 SQL 다이제스트를 펼치고 다이제스트의 하위 쿼리 중 하나를 선택합니다.

   500바이트 이상의 텍스트가 있는 SQL 문은 다음 이미지와 유사합니다.  
![\[라지 텍스트가 포함된 SQL 문\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf-insights-large-text-1.png)

1. **SQL 텍스트** 탭까지 아래로 스크롤합니다.  
![\[SQL 정보 섹션에는 더 많은 SQL 텍스트가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf-insights-large-text-2.png)

   성능 개선 도우미 대시보드는 각 SQL 문에 최대 4,096바이트를 표시할 수 있습니다.

1. (선택 사항) **복사**를 선택하여 표시된 SQL 문을 복사하거나 **다운로드**를 선택하여 최대 DB 엔진 한도까지 SQL 텍스트를 볼 수 있는 SQL 문을 다운로드합니다.
**참고**  
SQL 문을 복사하거나 다운로드하려면 팝업 차단 기능을 비활성화하세요.

# 성능 개선 도우미 대시보드에서 SQL 통계 보기
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.AnalyzingSQLLevel"></a>

성능 개선 도우미 대시보드에서 SQL 통계는 **데이터베이스 로드(Database load)** 차트의 **상위 SQL(Top SQL)** 탭에서 확인할 수 있습니다.

**SQL 통계를 보는 방법**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **성능 개선 도우미(Performance Insights)**를 선택합니다.

1. 페이지 상단에서 SQL 통계를 확인하려는 데이터베이스를 선택합니다.

1. 페이지의 하단으로 스크롤하고 **상위 SQL(Top SQL)**을 선택합니다.

1. 개별 문 또는 다이제스트 쿼리를 선택합니다.  
![\[실행 중인 쿼리의 지표 보기\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_per_sql_sql.png)

1. 차트 오른쪽 상단 모서리에 있는 기어 모양 아이콘을 선택하여 표시할 통계를 선택하십시오. Amazon RDS엔진의 SQL 통계에 대한 설명을 보려면 [성능 개선 도우미에 대한 SQL 통계](sql-statistics.md) 섹션을 참조하세요.

   다음 예는 Oracle DB 인스턴스의 통계 기본 설정을 보여줍니다.  
![\[Oracle DB 인스턴스의 실행 중인 쿼리에 대한 지표 기본 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_per_sql_pref_oracle.png)

   다음 예는 MariaDB 및 MySQL DB 인스턴스의 기본 설정을 보여줍니다.  
![\[MariaDB 및 MySQL DB 인스턴스의 실행 쿼리에 대한 지표 기본 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_per_sql_pref_ams.png)

1. 저장(Save)을 선택하여 기본 설정을 저장합니다.

   **상위 SQL(Top SQL)** 테이블이 새로 고쳐집니다.

   다음 예는 Oracle SQL 쿼리의 통계를 보여줍니다.  
![\[SQL 쿼리에 대한 통계\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/perf_insights_per_sql_stats_oracle.png)