오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-30 13:56
관리 메뉴

우노

[DB] Database Performance Metric 본문

Database/Concept

[DB] Database Performance Metric

운호(Noah) 2023. 7. 17. 11:06

데이터베이스 성능 관리가 필수적인 이유

  • 효과적인 데이터베이스 성능 관리 전략은 사용자 만족도를 높이고 비용을 절감하며 모든 조직의 성공에 실질적으로 기여할 수 있습니다.

데이터베이스 성능 지표 종류

  • 쿼리 성능 지표
  • 데이터베이스 상태 지표
  • 시스템 리소스 성능 지표
  • 캐시 및 인덱스 성능 지표
  • 연결 상태 지표
  • 접근 경합 지표

쿼리 성능 지표

  • Query Response or Latency
    • 데이터베이스가 쿼리나 요청에 대해 응답하는 데 걸리는 시간을 의미합니다.
  • Slow Queries
    • 실행 시간이 긴 쿼리들을 의미합니다.
  • Most Frequent Queries
    • 가장 빈번하게 실행되는 쿼리들을 의미합니다.
  • 일반적인 쿼리 성능 저하의 원인
    • 비효율적인 조회
      • 종종 SELECT * 와 같이, 필요한 행, 열보다 더 많은 데이터를 반환합니다.
    • 다른 테이블 간 비효율적인 조인
      • 전체 외부 조인, 데이터 유형이 다른 열에 대한 조인 등은 상당한 CPU 비용이 발생됩니다.
    • 인덱스 문제
      • 인덱스가 너무 적을 경우
        • 데이터베이스는 테이블 전체를 스캔하여 원하는 결과를 찾아야하기 때문에 대량의 디스크 입/출력(I/O)이 발생하게 됩니다.
      • 인덱스가 너무 많을 경우
        • 데이터베이스 업데이트 및 삽입 작업 시 모든 인덱스를 업데이트해야하므로, 데이터 변경 작업의 성능 저하 발생하게 됩니다.

데이터베이스 상태 지표

  • Transactions Per Second (TPS)
    • 데이터베이스가 초당 처리하는 트랜잭션의 수를 의미합니다.
  • Database Events
    • 데이터베이스에서 발생한 이벤트(데이터베이스의 상태 변화, 작업 수행, 오류 발생 등)를 의미합니다.

시스템 리소스 성능 지표

  • CPU Utilization
    • 데이터베이스의 CPU 사용률을 의미합니다.
  • Memory Utilization
    • 데이터베이스의 Memory 사용률을 의미합니다.
  • I/O Utilization
    • 데이터베이스의 입출력 작업 사용률 의미합니다.
    • 데이터베이스는 캐시를 통해 데이터를 메모리에 저장하여 디스크 액세스를 피하고 데이터 접근 속도를 향상시킵니다.
    • I/O Utilization이 높을 경우 디스크 액세스가 빈번하게 발생하므로, 데이터베이스의 캐싱 효과가 감소할 수 있습니다.
  • Disk Space Usage
    • 데이터, 로그 및 인덱스 파일을 포함하여 데이터베이스 파일이 차지하고 있는 디스크 공간의 양을 의미합니다.
    • 데이터베이스에는 상당한 디스크 액세스가 필요하므로, 원활한 데이터베이스 작업을 위해서는 충분한 디스크 공간을 확보하는 것이 중요합니다.
    • 효율적인 디스크 사용 방법
      • 활동이 많은 테이블을 분리해야 합니다.
        • 활동이 많은 테이블 : 많은 수의 쿼리 실행과 데이터 변경 작업이 동시에 발생하는 테이블
        • 따라서, 테이블 내부 데이터 접근 경합으로 인한 동시성 문제로 성능 저하가 초래될 수 있습니다.
      • 데이터베이스와 인덱스를 서로 다른 디스크에 배치해야 합니다.
        • 데이터베이스와 인덱스가 동일한 디스크에 위치할 경우, 접근 경합으로 인한 디스크 병목 현상으로 성능 저하가 초래될 수 있습니다.

캐시 및 인덱스 성능 지표

  • Cache Hit Ratio
    • 캐시에서 성공적으로 데이터를 찾아온 비율을 의미합니다.
    • 비율이 높을수록 디스크 액세스(I/O 작업)가 적다는 의미이므로, 성능 향상에 도움이 될 수 있습니다.
  • Index Hit Rate
    • 인덱스를 통해 성공적으로 쿼리를 처리한 비율을 의미합니다.
    • 적절한 인덱스 수를 가지고 있을 경우, 인덱스 히트 비율이 높을수록 검색 속도가 높아질 수 있습니다.

연결 상태 지표

  • Connection Pool Usage

    • Connection Pool은 애플리케이션 초기화 시, 서버 또는 프레임워크에서 생성하는, DB와 Connection된 객체들의 모음입니다.
    • 클라이언트로부터 데이터베이스 연결 요청이 오면, Pool에서 사전 연결된 Connection을 받고, 처리가 끝나면 다시 Pool로 Connection을 반납하는 구조입니다.
    • 즉, Pool의 Connection을 재사용하는 구조이기 때문에, 클라이언트 요청마다 물리적으로 데이터베이스에 Connection하는 시간이 소비되지 않습니다.
    • 따라서, Connection Pool Usage가 높아질수록 이미 생성된 Connection을 재사용하므로 연결 지연이 감소하고 애플리케이션의 성능이 향상될 수 있습니다.

접근 경합 지표

  • Blocked Transactions
    • 동일한 리소스 접근으로 인해 차단된 트랜잭션을 의미합니다.
    • 일반적으로, 차단된 트랜잭션은 리소스 접근이 가능해질 때까지 차단이 지속됩니다.
  • Deadlocks
    • 두 개 이상의 트랜잭션이 서로 동일한 리소스의 접근을 기다리는, 교착 상태의 트랜잭션을 의미합니다.
    • 시스템 성능을 유지하려면 교착 상태를 모니터링하고 해결해야 합니다.

참고

Comments