> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 데이터베이스 모니터링

> Monitoring 탭을 사용해 프로덕션 데이터베이스에서 지금 실행 중인 쿼리와 앱을 느리게 만드는 쿼리를 확인하세요.

**Monitoring** 탭에서는 데이터베이스가 무엇을 하고 있는지, 즉 지금 이 순간 실행 중인 작업과 전체적으로 가장 많은 시간을 차지하는 쿼리를 확인할 수 있습니다.

<Note>
  Monitoring은 프로덕션 데이터베이스에서만 사용할 수 있습니다.
</Note>

<Accordion title="Monitoring에 접근하는 방법">
  **Database** 도구에서:

  1. 프로덕션 데이터베이스를 선택하세요.
  2. **Monitoring** 탭을 선택하세요.
  3. **Active queries** 또는 **Query performance**를 선택하세요.
</Accordion>

## Active queries

지금 데이터베이스에서 실행 중인 모든 작업의 실시간 스냅샷입니다.

<Frame>
  <img src="https://mintcdn.com/replit/fcHMBvM8WVqfNJC_/images/databases/database-monitoring-active-queries.jpg?fit=max&auto=format&n=fcHMBvM8WVqfNJC_&q=85&s=09c3cfb5069fda33f19ac118047d04e1" alt="PID, 역할, 상태, 소요 시간, SQL과 함께 실행 중인 쿼리 세 개를 보여주는 Active queries" width="2000" height="940" data-path="images/databases/database-monitoring-active-queries.jpg" />
</Frame>

* **PID**: 쿼리를 실행 중인 연결의 프로세스 ID입니다.
* **Role**: 연결을 연 데이터베이스 사용자입니다.
* **State**: `active`는 쿼리가 실행 중임을 의미합니다. `idle in transaction`은 트랜잭션이 열려 있지만 아무 작업도 하지 않는 상태입니다. 이 상태에서도 잠금은 유지됩니다.
* **Duration**: 현재 쿼리가 실행된 시간입니다.
* **Query**: 쿼리문 자체입니다.

이것은 로그가 아닌 스냅샷입니다. 새 스냅샷을 가져오려면 **Refresh**를 선택하세요. 대부분의 쿼리는 몇 밀리초 만에 끝나므로 목록이 비어 있는 것은 정상입니다. 이 보기는 필요 이상으로 오래 실행되는 쿼리를 찾는 데 사용하세요. 완전히 유휴 상태인 연결은 표시되지 않습니다.

## Query performance

데이터베이스가 실행한 모든 쿼리의 통계이며, 비용이 가장 큰 쿼리가 먼저 표시됩니다.

<Frame>
  <img src="https://mintcdn.com/replit/fcHMBvM8WVqfNJC_/images/databases/database-monitoring-query-performance.jpg?fit=max&auto=format&n=fcHMBvM8WVqfNJC_&q=85&s=f6ee1580cbcec66d14174e082da047e1" alt="각 쿼리의 역할, 호출 수, 평균 시간, 총 시간, 행 수를 보여주는 Query performance" width="2000" height="1153" data-path="images/databases/database-monitoring-query-performance.jpg" />
</Frame>

* **Calls**: 쿼리가 실행된 횟수입니다.
* **Average time**: 실행당 평균 시간입니다. 개별 실행은 표시되지 않고 평균만 표시됩니다.
* **Total time**: 평균 시간에 호출 수를 곱한 값입니다. 표는 이 값을 기준으로 정렬됩니다.
* **Rows**: 호출당이 아니라 모든 호출에 걸친 총 행 수입니다.
* **Query**: 사용자의 값이 `$1` 같은 플레이스홀더로 대체된 쿼리문입니다.

**Average time**과 **Calls**를 비교하면 두 가지 문제를 구분할 수 있습니다. 평균이 높고 호출이 적다면 느린 쿼리이며, 보통 인덱스가 없는 경우입니다. 평균이 낮고 호출이 많다면 앱이 너무 자주 실행하는 빠른 쿼리이며, 코드에서 변경해야 할 부분입니다.

<Warning>
  이 통계는 데이터베이스가 일시 중단되거나 재시작되면 유지되지 않습니다. 일정 시간 동안 활동이 없어 데이터베이스가 0으로 축소되면 기록이 초기화되고, 데이터베이스가 다시 실행된 후부터 수집을 다시 시작합니다.
</Warning>

## 다음 단계

* [데이터로 작업하기](/ko/features/data-and-storage/work-with-your-data): 데이터를 탐색, 편집, 쿼리합니다.
* [데이터 복구](/ko/features/data-and-storage/data-recovery): 프로덕션 데이터를 복원합니다.
