

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# DB 인스턴스에 대한 Performance Insights 지표
<a name="db-instance-performance-insights"></a>

Performance Insights는 다음 섹션에서 설명한 대로 여러 유형의 지표를 모니터링합니다.

## 데이터베이스 부하
<a name="dbload"></a>

데이터베이스 로드(`DBLoad`)는 데이터베이스의 활동 수준을 측정하는 Performance Insights의 주요 지표입니다. 이 지표는 1초마다 수집되어 Amazon CloudWatch에 자동으로 게시됩니다. 이는 SQL 쿼리를 동시에 실행하는 세션 수에 해당하는 평균 활성 세션(AAS)에서 DB 인스턴스의 활동을 나타냅니다. `DBLoad` 지표는 5가지 차원(대기, SQL, 호스트, 사용자, 데이터베이스) 중 하나를 사용하여 해석할 수 있으므로 다른 시계열 지표와 다릅니다. 이러한 차원은 `DBLoad` 지표의 하위 범주입니다. 이를 범주별로 *구분*하여 데이터베이스 로드의 여러 특성을 나타낼 수 있습니다. 데이터베이스 로드를 계산하는 방법에 대한 자세한 설명은 Amazon RDS 설명서의 [데이터베이스 부하](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html)를 참조하세요.

다음 화면 그림에서는 Performance Insights 도구를 보여줍니다.

![\[Performance Insights 도구의 데이터베이스 로드\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/database-load.png)


## 측정 기준
<a name="dimensions"></a>
+ *대기 이벤트*는 데이터베이스 세션이 처리를 계속하기 위해 리소스나 다른 작업이 완료될 때까지 기다리는 조건입니다. SQL 문(예: `SELECT * FROM big_table`)을 실행하고 이 테이블이 할당된 InnoDB 버퍼 풀보다 훨씬 큰 경우 세션은 데이터 파일의 물리적 I/O 작업으로 인해 발생하는 `wait/io/file/innodb/innodb_data_file` 대기 이벤트를 기다릴 가능성이 큽니다. 대기 이벤트는 잠재적 성능 병목 현상을 나타내기 때문에 데이터베이스 모니터링에 중요한 차원입니다. 대기 이벤트는 세션 내에서 실행 중인 SQL 문이 가장 많은 시간을 기다리는 리소스 및 작업을 나타냅니다. 예를 들어 트랜잭션 수가 많은 데이터베이스 활동이 많을 때 `wait/synch/mutex/innodb/trx_sys_mutex` 이벤트가 발생하고, 스레드가 InnoDB 버퍼 풀에서 잠금을 획득하여 메모리의 페이지에 액세스하면 `wait/synch/mutex/innodb/buf_pool_mutex` 이벤트가 발생합니다. 모든 MariaDB 및 MySQL 대기 이벤트에 대한 자세한 내용은 MySQL 설명서의 [대기 이벤트 요약 테이블](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-wait-summary-tables.html)을 참조하세요. 계측 이름을 해석하는 방법을 이해하려면 MySQL 설명서의 [성능 스키마 장비 이름 지정 규칙](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-instrument-naming.html)을 참조하세요.
+ *SQL*에서는 총 데이터베이스 로드에 가장 많이 기여하는 SQL 문을 보여줍니다. Amazon RDS Performance Insights의 **데이터베이스 로드** 차트 아래에 있는 **상위 차원** 테이블은 대화형입니다. **대기별 로드(AAS)** 열의 막대를 클릭하여 SQL 문과 연결된 대기 이벤트의 세부 목록을 얻을 수 있습니다. 목록에서 SQL 문을 선택하면 Performance Insights는 **데이터베이스 로드** 차트에 연결된 대기 이벤트를 표시하고 **SQL 텍스트** 섹션에 SQL 문 텍스트를 표시합니다. SQL 통계는 **상위 차원** 테이블 오른쪽에 표시됩니다.
+ *호스트*에서는 연결된 클라이언트의 호스트 이름을 표시합니다. 이 차원은 데이터베이스로 대부분의 로드를 전송하는 클라이언트 호스트를 식별하는 데 도움이 됩니다.
+ *사용자*에서는 데이터베이스에 로그인한 사용자별로 DB 로드를 그룹화합니다.
+ *데이터베이스*에서는 클라이언트가 연결된 데이터베이스 이름을 기준으로 DB 로드를 그룹화합니다.

## 카운터 지표
<a name="counter-metrics"></a>

카운터 지표는 DB 인스턴스가 다시 시작될 때만 값이 증가하거나 0으로 재설정할 수 있는 누적 지표입니다. 카운터 지표 값은 이전 값으로 줄일 수 없습니다. 이러한 지표는 단순 증가하는 단일 카운터를 나타냅니다.
+ [기본 카운터](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.Native)는 Amazon RDS가 아닌 데이터베이스 엔진에 의해 정의되는 지표입니다. 예제:
  + `SQL.Innodb_rows_inserted`는 InnoDB 테이블에 삽입된 행 수를 나타냅니다.
  + `SQL.Select_scan`은 첫 번째 테이블의 전체 스캔을 완료한 조인 수를 나타냅니다.
  + `Cache.Innodb_buffer_pool_reads`는 InnoDB 엔진이 버퍼 풀에서 검색할 수 없고 디스크에서 직접 읽어야 하는 논리적 읽기 수를 나타냅니다.
  + `Cache.Innodb_buffer_pool_read_requests`는 논리적 읽기 요청 수를 나타냅니다.

  모든 기본 지표의 정의는 MySQL 설명서에서 [서버 상태 변수](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html)를 참조하세요.
+ [기본이 아닌 카운터 지표](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.NonNative)는 Amazon RDS에 의해 정의됩니다. 특정 쿼리를 사용하여 이러한 지표를 확보하거나 계산에 둘 이상의 기본 지표를 사용하여 파생할 수 있습니다. 기본이 아닌 카운터 지표는 지연 시간, 비율 또는 적중률을 나타낼 수 있습니다. 예제:
  + `Cache.innoDB_buffer_pool_hits`는 InnoDB가 디스크를 활용하지 않고 버퍼 풀에서 검색할 수 있는 읽기 작업 수를 나타냅니다. 다음과 같이 기본 카운터 지표에서 계산됩니다.

    ```
    db.Cache.Innodb_buffer_pool_read_requests - db.Cache.Innodb_buffer_pool_reads
    ```
  + `IO.innoDB_datafile_writes_to_disk`는 디스크에 대한 InnoDB 데이터 파일 쓰기 작업 수를 나타냅니다. 데이터 파일에서의 작업만 캡처하며 이중 쓰기 또는 다시 실행 로깅 쓰기 작업은 캡처하지 않습니다. 다음과 같이 계산됩니다.

    ```
    db.IO.Innodb_data_writes - db.IO.Innodb_log_writes - db.IO.Innodb_dblwr_writes
    ```

Performance Insights 대시보드에서 직접 DB 인스턴스 지표를 시각화할 수 있습니다. 다음 그림과 같이 **지표 관리**를 선택하고 **데이터베이스 지표** 탭을 선택한 다음 관심 지표를 선택합니다.

![\[Performance Insights에서 DB 인스턴스 지표 선택\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics.png)


다음 그림과 같이 **그래프 업데이트** 버튼을 선택하여 선택한 지표를 표시합니다.

![\[Performance Insights에서 DB 인스턴스 지표 보기\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics-results.png)


## SQL 통계
<a name="sql-stats"></a>

Performance Insights는 쿼리가 실행 중인 동안 초당 SQL 쿼리 및 각 SQL 직접 호출에 대한 성능 관련 지표를 수집합니다. 일반적으로 Performance Insights는 명령문 및 다이제스트 수준에서 [SQL 통계](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.html)를 수집합니다. 그러나 MariaDB 및 MySQL DB 인스턴스의 경우 통계는 다이제스트 수준에서만 수집됩니다.
+ 다이제스트 통계는 패턴이 동일하지만 결국 리터럴 값이 다른 모든 쿼리의 복합 지표입니다. 다이제스트는 특정 리터럴 값을 변수로 대체합니다. 예를 들어 다음과 같습니다.

  ```
  SELECT department_id, department_name FROM departments WHERE location_id = ?
  ```
+ 다이제스트된 각 SQL 문에 대해 *초당* 통계를 나타내는 지표가 있습니다. 예를 들어 `sql_tokenized.stats.count_star_per_sec`은 초당 직접 호출 수(즉, 초당 SQL 문이 실행된 횟수)를 나타냅니다.
+ Performance Insights에는 SQL 문에 대한 *직접 호출당* 통계를 제공하는 지표도 포함되어 있습니다. 예를 들어 `sql_tokenized.stats.sum_timer_wait_per_call`은 직접 호출당 SQL 문의 평균 지연 시간(밀리초)을 표시합니다.

SQL 통계는 Performance Insights 대시보드에 있는 **상위 차원**의 **상위 SQL** 탭에서 사용할 수 있습니다.

![\[SQL 통계\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/sql-stats.png)
